我想抑制来自g ++的特定警告。我知道-Wno-XXX
标志,但我正在寻找更具体的东西。我希望-Weffc++
中的某些警告,但不是所有。像你可以用lint做的事情 - 禁用特定的消息。
gcc中是否有内置方式来执行此操作?我是否必须编写包装脚本?
答案 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