在gcc中禁用除少数警告以外的所有警告
在gcc中-w用于禁用所有警告。但是在这种情况下,我无法启用特定的类型(例如,-Wreturn类型) 是否可以禁用所有警告,但启用少数特定警告在gcc中禁用除少数警告以外的所有警告,gcc,Gcc,在gcc中-w用于禁用所有警告。但是在这种情况下,我无法启用特定的类型(例如,-Wreturn类型) 是否可以禁用所有警告,但启用少数特定警告 作为一种解决方法,是否有一种方法可以一次生成所有Wno xxx的列表?这会有帮助吗?我不想手动执行此操作,只是为了发现它不等于-w。您可以使用以下命令获取一个WARN\u OPTS变量,该变量适合直接注入您的Makefile: gcc --help=warnings | awk ' BEGIN { print "WARN_OPTS =
作为一种解决方法,是否有一种方法可以一次生成所有Wno xxx的列表?这会有帮助吗?我不想手动执行此操作,只是为了发现它不等于-w。您可以使用以下命令获取一个
WARN\u OPTS
变量,该变量适合直接注入您的Makefile
:
gcc --help=warnings | awk '
BEGIN { print "WARN_OPTS = \\" }
/-W[^ ]/ { print $1" \\"}
' | sed 's/^-W/ -Wno-/' >makefile.inject
这将为您提供如下输出(在makefile.inject
中):
一旦将其放入实际的Makefile
,只需在gcc
命令中使用$(WARN\u OPTS)
可能需要少量修补,以达到:
- 清除无效选项,例如
李>-Wno-
- 固定某些
类型;及-Wno-=
- 删除最后的
字符\
当您确定需要这些警告之一时,只需从
-Wno-
切换回-W
,这很奇怪。您通常应该启用所有警告并禁用特定警告…是的,您是对的,您知道得更好!但让我们想象一下,我有一个包含4百万行代码的遗留项目,我希望在其中查找特定错误。如果您只指定-Wreturn type
(没有其他与警告相关的标志),这不符合您的要求吗?不,默认情况下会启用警告。
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 \