8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

MSVC 无法正确扩展 __VA_ARGS__

Tanas 1月前

138 0

考虑以下代码:#define F(x, ...) X = x and VA_ARGS = __VA_ARGS__#define G(...) F(__VA_ARGS__)F(1, 2, 3)G(1, 2, 3) 两个宏的预期输出均为 X = 1 and VA_ARGS = 2, 3,即

考虑以下代码:

#define F(x, ...) X = x and VA_ARGS = __VA_ARGS__
#define G(...) F(__VA_ARGS__)
F(1, 2, 3)
G(1, 2, 3)

预期的输出是 X = 1 and VA_ARGS = 2, 3 针对两个宏的,这就是我使用 GCC 获得的结果,但是,MSVC 将其扩展为:

X = 1 and VA_ARGS = 2, 3
X = 1, 2, 3 and VA_ARGS =

也就是说, __VA_ARGS__ 它被扩展为一个参数,而不是分解为多个参数。

有什么办法可以解决这个问题吗?

帖子版权声明 1、本帖标题:MSVC 无法正确扩展 __VA_ARGS__
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Tanas在本站《visual-studio》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 感谢您传达 MS 的理由。他们似乎将 16.3.1/p12 中的“合并形成单个项目”解释为“合并形成单个永久不可分割的预处理器标记”,这似乎不太有用。我希望替换的标记至少在 16.3.4 中给出的重新扫描步骤中重新分离,这似乎是其他编译器正在做的事情。

返回
作者最近主题: