Is there a way in this code
#include <stdio.h>
// #define t1
#define msg_a 1
#define msg_b 2
#define msg_c 3
#ifdef t1
#define msg_d 4
#define msg_e 5
#endif
#define call(msg) case msg_ ## msg: printf("msg_" #msg); break;
#define avail \
call(a) \
call(b) \
call(c) \
call(d) \
call(e) \
int main(void)
{
int test;
test = 2;
printf("test = %d\n", test);
switch (test)
{
avail
}
printf("\nend\n");
return 0;
}
to get (logically) the same result as if the bellow code works?
#define avail \
call(a) \
call(b) \
call(c)
#ifdef t1
call(d) \
call(e) \
#endif
So, I don't want to generate code like case msg_b: printf("msg_" "b"); break;
inside my switch
if t1
is not defined.
Also, more defines like this maybe included, and then there will be
...
#ifdef t2
#define msg_f 6
#define msg_g 7
#endif
...
and again, this should works like this
#define avail \
call(a) \
call(b) \
call(c)
#ifdef t1
call(d) \
call(e) \
#endif
#ifdef t2
call(f) \
call(g) \
#endif
Is there a way to get something similar to this?