1 2 3 4 5 6 7 8 9 10 11 12 13
| #define __IGNORE(...) #define __KEEP(...) __VA_ARGS__ #define IFNDEF(macro, ...) MUXNDEF(macro, __KEEP, __IGNORE)(__VA_ARGS__)
#define __P_DEF_0 X, #define __P_DEF_1 X, #define MUXNDEF(macro, X, Y) MUX_MACRO_PROPERTY(__P_DEF_, macro, Y, X) #define MUX_MACRO_PROPERTY(p, macro, a, b) MUX_WITH_COMMA(concat(p, macro), a, b)
#define MUX_WITH_COMMA(contain_comma, a, b) CHOOSE2nd(contain_comma a, b) #define CHOOSE2nd(a, b, ...) b
|