我想禁止来自 g++ 的特定警告。我知道这个-Wno-XXX
标志,但我正在寻找更具体的东西。我想要一些警告-Weffc++
,但不是全部。类似于您可以使用 lint 执行的操作 - 禁用特定消息。
gcc 中是否有内置方法来执行此操作?我必须编写包装脚本吗?
不幸的是,这个特性不是由 g++ 提供的。在 VC++ 中,您可以使用#pragma warning来禁用某些特定的警告。在 gcc 中,您可以拥有的最接近的是diagnostic pragmas,它允许您为某些文件或项目启用/禁用某些类型的诊断。
编辑:GCC 自 4.6.4 起支持推送/弹出警告(请参阅更改日志)
对于某些警告,有一个命令行开关可以禁用它们。为了知道使用哪个开关,传递-fdiagnostics-show-option
给 gcc。
您可以在输出上使用grep -v。
根据您希望禁用的警告,您有时可以在代码中进行更正。例如:
int main()
{
int i;
}
生成: foo.cc:4:警告:未使用的变量“i”
而这不是:
#define MARKUSED(X) ((void)(&(X)))
int main()
{
int i;
MARKUSED(i);
}
将标准错误传递给过滤器,以删除您不想看到的内容。例如,这是我的 make 文件:
main.o: main.cpp
g++ -c -Wall main.cpp 2>&1 | grep -v Wunused-variable