【发布时间】:2014-08-21 18:37:07
【问题描述】:
示例代码:
#define FOO(...) You passed: #__VA_ARGS__
FOO(1,2,3)
FOO()
使用 Visual C++(版本 14 CTP)进行预处理,获取:
You passed: "1,2,3"
You passed:
在最后一行,#__VA_ARGS__ 变成了虚无。我宁愿把它变成“”。
对于应该发生的事情是否有明确的参考?我用谷歌搜索了很多,但找不到。
任何建议的解决方法也会很有用。
【问题讨论】:
-
标准可能未指定。当我在
gcc的预处理器下运行时,我目前得到""。 -
您是否查看了预处理的源代码,或者您是否有可能误解了测试程序的输出?
-
这没什么区别,不是吗?您始终可以将结果连接成您喜欢的任何字符串:
"Hello: " FOO() "!\n"
标签: c++ c-preprocessor variadic-macros