我正在阅读gcc手册,特别是关于警告/错误标志的部分。在阅读关于-Wextra标志的部分后,我想知道它是否有用。它似乎抱怨似乎相当主观或品味的事情。我不是那些经验丰富的gcc,我只是不时地在大学里用它来做一些小项目,所以对于所有有经验的C / C ++(或者你使用gcc的任何语言),什么是-Wextra?
答案 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)有用,而且还可以识别其他编译问题。我发现它经常有用。