Bry*_*yan 5 c++ c-preprocessor variadic-macros
示例代码:
#define FOO(...) You passed: #__VA_ARGS__
FOO(1,2,3)
FOO()
Run Code Online (Sandbox Code Playgroud)
使用Visual C++(版本14 CTP)进行预处理,得到:
You passed: "1,2,3"
You passed:
Run Code Online (Sandbox Code Playgroud)
在最后一行,#__VA_ARGS__变成了虚无.我希望它变成"".
对于应该发生的事情,是否有明确的参考?我用Google搜索了很多但却找不到它.
任何建议的解决方案也很有用.
按6.10.3.2#运算符(C11):
语义
2 - [...]对应于空参数的字符串文字是
"".[...]
所以我认为MSVC在这里是不正确的.
我会使用字符串文字串联来解决这个问题:
#define FOO(...) You passed: "" #__VA_ARGS__
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2117 次 |
| 最近记录: |