零可变宏参数的GCC编译器警告标志

时间:2016-02-23 19:28:06

标签: c++ gcc

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),但这些都没有负责此警告。

1 个答案:

答案 0 :(得分:2)

导致问题的警告标志是-Wpedantic。这是因为省略可变参数是非法的,它需要诊断。警告满足了这一要求。