#define STR1 "NEW"
#define STR2 PILLAR
#define MAKE_STR(x) #x
#define STR3 STR1 MAKE_STR(STR2)
printf(STR3 " hello world\n");
上述声明扩展为
printf("NEWSTR2 hello world\n");
我需要像“NEWPILLAR hello world”这样的东西。有什么输入吗?
答案 0 :(得分:0)
在string-ifying之前展开STR2
。
#define STR1 "NEW"
// #define STR2 PILLAR
#define STR2 MAKE_STR(PILLAR)
#define MAKE_STR(x) #x
// #define STR3 STR1 MAKE_STR(STR2)
#define STR3 STR1 STR2
printf(STR3 " hello world\n");
或者,如果您确实需要从其他地方定义STR2
:
#define EXPAND_MAKE_STR(x) MAKE_STR(x)
#define STR3 STR1 EXPAND_MAKE_STR(STR2)