36

我想禁止来自 g++ 的特定警告。我知道这个-Wno-XXX标志,但我正在寻找更具体的东西。我想要一些警告-Weffc++,但不是全部。类似于您可以使用 lint 执行的操作 - 禁用特定消息。

gcc 中是否有内置方法来执行此操作?我必须编写包装脚本吗?

4

4 回答 4

24

不幸的是,这个特性不是由 g++ 提供的。在 VC++ 中,您可以使用#pragma warning来禁用某些特定的警告。在 gcc 中,您可以拥有的最接近的是diagnostic pragmas,它允许您为某些文件或项目启用/禁用某些类型的诊断。

编辑:GCC 自 4.6.4 起支持推送/弹出警告(请参阅更改日志

于 2009-01-28T12:55:58.633 回答
12

对于某些警告,有一个命令行开关可以禁用它们。为了知道使用哪个开关,传递-fdiagnostics-show-option给 gcc。

于 2009-01-28T13:00:37.360 回答
2

您可以在输出上使用grep -v

根据您希望禁用的警告,您有时可以在代码中进行更正。例如:

int main()
{
  int i;
}

生成: foo.cc:4:警告:未使用的变量“i”

而这不是:

#define MARKUSED(X)  ((void)(&(X)))

int main()
{
  int i;
  MARKUSED(i);
}
于 2009-01-28T15:26:53.120 回答
2

将标准错误传递给过滤器,以删除您不想看到的内容。例如,这是我的 make 文件:

main.o:  main.cpp
    g++ -c -Wall main.cpp 2>&1 | grep -v Wunused-variable
于 2013-03-09T23:03:32.377 回答