英语不是我的母语;因此我展示代码来阐述。
#define concat_temp(x, y) x##y
#define concat(x, y) concat_temp(x, y)
#define BAR 2
int main() {
concat_temp(FOO, BAR)
concat(FOO, BAR)
}
当我执行
clang -E
命令时,宏被展开为:int main() {
FOOBAR
FOO2
}
谁能解释一下为什么concat_temp
不能将bar
扩展到2
,而concat
可以做到?
concat_temp(FOO, (BAR))
可能仍然会产生FOO2
。我认为可能是错误的,并且取决于编译器。 - Shark