宏可变参数和空宏可变参数

安托万·莫里尔

我知道这是无效的

#define MACRO(x, ...) __VA_ARGS__
MACRO(5); // VA ARGS is empty, so is not good

但是,这有效吗?

#define MACRO(x, ...)
MACRO(5);

在Wandbox上,clang会警告我,gcc不会,而在我的计算机上MSVC也不会。

PW

当在godbolt.org上使用GCC(从5.1版到最新的8.2版)进行测试时,该-pedantic-errors选项会导致错误

<source>:5:8: error: ISO C++11 requires at least one argument for the "..." in a variadic macro
 MACRO(5)

在这里看到它

您将不得不等待__VA_OPT__(可从C ++ 2a获得)完成您想做的事情。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章