【发布时间】:2016-02-23 19:28:05
【问题描述】:
GCC 中零可变参数宏参数的编译器警告标志是什么(我使用的是 GCC 5.3.0)?
警告是由这样的代码触发的
// for illustration purposes only:
int foo(int i) { return 0; };
#define FOO(A, ...) foo(A, ##__VA_ARGS__)
FOO(1);
^ warning: ISO C++11 requires at least one argument for the "..." in a variadic macro
但警告并未指明使用哪个标志来启用/禁用警告(这通常显示在方括号[-Wwarning-flag-name] 中)。
在clang中是-Wgnu-zero-variadic-macro-arguments。我在warning documentation of gcc-5.3.0 中找不到类似的东西。
我试过-Wgnu-zero-variadic-macro-arguments、-Wvarargs、-Wno-variadic-macros(感谢@Revolver_Ocelot),但这些都不是负责这个警告的。
【问题讨论】:
-
您到底想达到什么目的?看起来
foo(int i)的定义方式并未使其与可变参数宏兼容。 -
@Xirema 我正在尝试禁用警告,该示例仅用于说明目的。
-
那么
FOO(1,);呢? -
据我所见,此警告似乎仅在使用
-pedantic编译时才会出现。如果不使用,则没有警告(在我的机器上)。我不确定您是否可以使用-pedantic隐藏警告