考虑以下代码:#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__
它被扩展为一个参数,而不是分解为多个参数。
有什么办法可以解决这个问题吗?
MSVC 无法正确扩展 __VA_ARGS__
下载声明:
本站所有软件和资料均为软件作者提供或网友推荐发布而来,仅供学习和研究使用,不得用于任何商业用途。如本站不慎侵犯你的版权请联系我,我将及时处理,并撤下相关内容!