-Wextra真的有用吗?

时间:2010-05-22 14:17:34

标签: gcc

我正在阅读gcc手册,特别是关于警告/错误标志的部分。在阅读关于-Wextra标志的部分后,我想知道它是否有用。它似乎抱怨似乎相当主观或品味的事情。我不是那些经验丰富的gcc,我只是不时地在大学里用它来做一些小项目,所以对于所有有经验的C / C ++(或者你使用gcc的任何语言),什么是-Wextra?

3 个答案:

答案 0 :(得分:24)

-Wextra等其他内容暗示-Wtype-limits

  

如果比较始终为真,则发出警告或   由于范围有限,总是假的   数据类型,但不要警告   常数表达式。例如,   如果无符号变量是警告   用'<'与零进行比较要么   '> ='。此警告也可以通过   -Wextra。

我觉得非常有用

答案 1 :(得分:7)

我通常会添加-Wno-sign-compare-Wno-unused-parameter来消除噪音。

隐含的-Wuninitialized-O2选项)对我很有用非常,但最初将它添加到您的代码库可能有点令人生畏。解决这个问题的一种方法是添加两个宏(看起来有些奇怪:等号是故意的):

#define ELIMINATE_GCC_WARNING = 0 // used to remove nuisance warnings
#define UNCHECKED_GCC_WARNING = 0 // not yet verified

然后你可以通过使用例如:

快速消除gcc警告并获得一个干净的编译
int foo UNCHECKED_GCC_WARNING;

然后作为可选步骤返回并检查这些添加内容,并逐个更改为ELIMINATE_GCC_WARNING。这可能很慢。但如果你没有找到一些现有的错误,我会感到惊讶。

答案 2 :(得分:2)

请参阅http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html

因此,它不仅对'always true'比较(-Wsign-compare)有用,而且还可以识别其他编译问题。我发现它经常有用。