如何在g ++中抑制特定警告

时间:2009-01-28 10:13:30

标签: c++ gcc g++

我想抑制来自g ++的特定警告。我知道-Wno-XXX标志,但我正在寻找更具体的东西。我希望-Weffc++中的某些警告,但不是所有。像你可以用lint做的事情 - 禁用特定的消息。

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

4 个答案:

答案 0 :(得分:20)

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

答案 1 :(得分:11)

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

答案 2 :(得分:2)

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

根据您要禁用的警告,您有时可以更正代码。 E.g:

int main()
{
  int i;
}

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

然而这不是:

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

int main()
{
  int i;
  MARKUSED(i);
}

答案 3 :(得分:2)

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

main.o:main.cpp     g ++ -c -Wall main.cpp 2>& 1 | grep -v Wunused-variable