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),但这些都没有负责此警告。
答案 0 :(得分:2)
导致问题的警告标志是-Wpedantic
。这是因为省略可变参数是非法的,它需要诊断。警告满足了这一要求。