我想从g++中屏蔽特定的警告。我知道-Wno-XXX
这个选项,但我想要更加特定的。我希望保留-Weffc++
中的一些警告,而不是全部。就像在lint中禁用特定消息一样。
在gcc中有内置的方法可以做到这一点吗?还是我需要编写一个包装脚本?
对于某些警告,可以使用命令行开关来禁用它们。为了知道应该使用哪个开关,请在gcc命令后添加-fdiagnostics-show-option
参数。
你可以直接在输出结果上使用grep -v命令。
根据你想要禁用的警告,有时可以通过代码进行修正。例如:
int main()
{
int i;
}
生成: foo.cc:4: 警告: 未使用的变量 'i'
而这个则不会产生警告:
#define MARKUSED(X) ((void)(&(X)))
int main()
{
int i;
MARKUSED(i);
}
#pragma GCC diagnostic ignored "-Wfloat-equal"
和 #pragma GCC diagnostic pop
。 - Evgeni Sergeevmain.o: main.cpp
g++ -c -Wall main.cpp 2>&1 | grep -v Wunused-variable
-Werror
,那么隐藏警告并没有什么用处(甚至可以说,它一点也帮不上你的忙)。 - Alexis Wilke当我的同事试图阻止我编写简洁的代码时,他们使用g++命令行选项。
-Werror-parenthesis
我在我的代码中禁用了这个错误:
#pragma GCC diagnostic ignored "-Wparentheses"
n
行代码的警告,请参考此答案。 - Keith Morgan