在gcc中禁用所有但很少的警告

时间:2012-04-06 09:40:42

标签: gcc

在gcc -w中用于禁用所有警告。但是在这种情况下,我无法启用特定的(例如-Wreturn-type)。

是否可以禁用所有警告,但只启用少量特定警告?

作为一种解决方法,有没有办法一次生成所有-Wno-xxx的列表?它会有帮助吗?我不想手动执行此操作只是为了发现它不等于-w。

1 个答案:

答案 0 :(得分:1)

您可以使用以下命令获取适合直接注入WARN_OPTS的{​​{1}}变量:

Makefile

这为您提供输出(在gcc --help=warnings | awk ' BEGIN { print "WARN_OPTS = \\" } /-W[^ ]/ { print $1" \\"} ' | sed 's/^-W/ -Wno-/' >makefile.inject 中),如:

makefile.inject

将其放入您的实际WARN_OPTS = \ -Wno- \ -Wno-abi \ -Wno-address \ -Wno-aggregate-return \ -Wno-aliasing \ -Wno-align-commons \ -Wno-all \ -Wno-ampersand \ -Wno-array-bounds \ -Wno-array-temporaries \ : : : -Wno-variadic-macros \ -Wno-vector-operation-performance \ -Wno-vla \ -Wno-volatile-register-var \ -Wno-write-strings \ -Wno-zero-as-null-pointer-constant \ 后,只需使用Makefile作为$(WARN_OPTS)命令的一部分。

可能需要进行少量修饰:

  • 摆脱gcc;
  • 等无效选项
  • 修复某些-Wno-类型;和
  • 删除最终的-Wno-<key>=<value>字符。

但与长列表的生成相比,这是最小的努力,你现在可以做的只是简单。

当您确定需要其中一个警告时,只需从\切换回-Wno-<something>