【发布时间】:2015-11-30 16:18:02
【问题描述】:
我发现了一个问题,显示如何根据参数数量重载宏: Overloading Macro on Number of Arguments
但正如他们所说,使用 MSVC 不起作用,因为 MSVC 将 __VA_ARGS__ 扩展为单个标记而不是参数列表 (arg1, arg2, arg3)。
他们指出了另一个问题:MSVC doesn't expand __VA_ARGS__ correctly 但根本没有解释,所以我无法理解它,所以我无法适应我自己的情况。
您能否解释一下这种解决方法的工作原理?
【问题讨论】:
-
我认为链接的帖子不正确。我认为正确的解决方案是
G(...) F(EXPAND(__VA_ARGS__) ) -
@LPs,我也是这么想的,不过试试看。
-
@JohnBollinger 我太熟悉 Linux 了,无法使用 MSVC :)。说真的,我还没有 MSVC 来测试它。让 OP 试试吧
-
不,在 Linux 上尝试您的版本。 Gcc 抛出错误。
-
谢谢,但这仍然不能解释此解决方法背后的逻辑。
标签: c visual-c++ macros variadic-macros