1)为什么宏MSG未在以下表达式中展开?
#define MSG Hello
#define HELLO(name) MSG ## name
void HELLO(Dave) () {}
使用
gcc -E -P test.cpp
输出:
void MSGDave () {}
MSG name
扩展为Hello Dave
。并MSG # name
扩展为Hello "Dave"
。那么是什么导致gcc不能扩展MSG ## name
?
2)有解决方法吗?
是否有像预定义(x)这样的预处理程序指令,例如expand(x)?
答案 0 :(得分:5)
答案 1 :(得分:3)
#define MSG Hello
#define cat(x, y) x ## y
#define cat2(x, y) cat(x, y)
#define HELLO(name) cat2(MSG,name)