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)是否有解决方法?
是否有像defined(x)那样的预处理器指令,比如expand(x)?