gpt4 book ai didi

visual-c++ - MSVC 未正确扩展 __VA_ARGS__

转载 作者:行者123 更新时间:2023-12-03 06:07:54 30 4
gpt4 key购买 nike

考虑这段代码:

#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 和 VA_ARGS = 2, 3,这就是我使用 GCC 得到的结果,但是,MSVC 将其扩展为:

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

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

有办法解决这个问题吗?

最佳答案

编辑:此问题可以通过使用来解决最近的 MSVC 中的 /Zc:preprocessor/experimental:preprocessor 选项。详情请参阅 here .

MSVC 的预处理器似乎与标准的行为有很大不同规范。
也许以下解决方法会有所帮助:

#define EXPAND( x ) x
#define F(x, ...) X = x and VA_ARGS = __VA_ARGS__
#define G(...) EXPAND( F(__VA_ARGS__) )

关于visual-c++ - MSVC 未正确扩展 __VA_ARGS__,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5134523/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com