【发布时间】:2025-11-24 21:05:01
【问题描述】:
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)?
【问题讨论】:
标签: c gcc macros c99 c-preprocessor