4

gcc では、すべての警告を無効にするために -w が使用されます。ただし、この場合、特定のもの (-Wreturn-type など) を有効にすることはできません。

すべての警告を無効にして、特定の警告をいくつか有効にすることはできますか?

回避策として、すべての -Wno-xxx のリストを一度に生成する方法はありますか? そして、それは役に立ちますか?-wと等しくないことを確認するためだけに、これを手動で実行したくありません。

4

1 に答える 1

1

次のコマンドを使用して、にWARN_OPTS直接注入するのに適した変数を取得できます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>後ろから に切り替え-W<something>ます。

于 2014-07-03T09:33:45.420 に答える