我正在阅读gcc手册,特别是关于警告/错误标志的部分.在阅读关于-Wextra标志的部分后,我想知道它是否有用.它似乎抱怨似乎相当主观或品味的事情.我不是那些经验丰富的gcc,我只是不时地在大学里用一些小项目,所以对于所有经验丰富的C/C++(或者你使用gcc的任何语言),什么是-Wextra?
nc3*_*c3b 27
-Wextra,以及其他的东西意味着-Wtype-limits:
如果由于数据类型的范围有限,比较始终为true或始终为false,则发出警告,但不警告常量表达式.例如,警告是否将无符号变量与"0"或"> ="进行比较.-wextra也启用此警告.
我发现这非常有用.
我通常添加-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
Run Code Online (Sandbox Code Playgroud)
然后你可以快速消除gcc警告,并通过使用例如:
int foo UNCHECKED_GCC_WARNING;
Run Code Online (Sandbox Code Playgroud)
然后作为可选步骤返回并检查这些添加,并逐个更改为ELIMINATE_GCC_WARNING.这可能很慢.但如果你没有发现一些现有的错误,我会感到惊讶.