禁用默认警告的警告/错误

时间:2013-04-30 13:53:27

标签: c gcc suppress-warnings

我们希望在大型项目上开始使用-Wall -Werror 由于规模大小,这种变化必须分阶段进行,我们首先要从最重要的警告开始。

最好的方法似乎是使用-Wall -Werror,特殊警告的例外情况。特殊的警告是我们有很多(因此修复所有这些都很难和冒险),我们认为它们不是很危险。
我并不是说我们不想解决所有这些警告 - 只是不在第一阶段。

我知道从-Werror排除警告的两种方法 - 最好的是-Wno-error=xxx,如果不起作用,则-Wno-xxx(当然,我们更愿意看到警告并忽略它,而不是隐藏它。

我的问题是默认启用的警告,并且没有与它们相关的-Wxxx标志。 <{1}}使用时,我无法找到任何方法。

我特别关注两个具体的警告。这是一个展示它们的程序和编译器输出:

-Werror

我知道最好的解决方案是修复这些警告,但说起来容易做起来难。为了使这一改变取得成功,我们必须分阶段进行,不能一次做太多改变。

有什么建议吗? 感谢。

3 个答案:

答案 0 :(得分:1)

如果要逐步编译单元/模块/库而不是每次警告?触发子目标编译是一个选项(一个足够好的构建系统)?

答案 1 :(得分:0)

这可能是愚蠢的,但是......

为什么不是一个简单的grep?

类似

 gcc teste.c 2>&1 | grep -v 'comparison of distinct' | grep -v 'some_other_string'

您可能希望在脚本中隐藏这些greps,并从makefile而不是gcc调用脚本

答案 2 :(得分:0)

根据https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43245,它将是&#34; -Wdiscarded-qualifiers&#34;,但由于错误修复的条目是从2014年5月1日开始,您使用的gcc编译器可能不支持它。