5

コンパイルされている言語に対してパラメータが無効であるというgcc警告を無効にするオプションがあるかどうか知りたいです。

元:

cc1: warning: command line option "-Wno-deprecated" is valid for C++/Java/ObjC++ but not for C

私たちのビルドシステムは、ビルド全体でグローバルに決定した警告を渡します。C / C ++コードがあり、実際の警告を見つけようとすると、警告が非常に煩わしくなります。

助言がありますか?

4

5 に答える 5

3

gcc -Wxxxxで特定の警告を有効にし、 -Wno-xxxxで無効にします。

GCC警告オプションから:

-W', for example -Wimplicit to request warnings on implicit declarations. Each of these specific warning options also has a negative form beginning警告をオフにする-Wno-'で始まるオプションを使用して、多くの特定の警告を要求できます。たとえば、-Wno-implicit。このマニュアルには、2つの形式のうち、デフォルトではない方のみが記載されています。

ただし、@ Neilは、異なる言語のオプションを分離することについて正しいです。makeを使用する場合、たとえば、すべてのCオプションをCFLAGSに入れ、すべてのC++オプションをCCFLAGSに入れることができます。

于 2009-06-04T22:49:47.927 に答える
2

そのようなオプションがあった場合、そのオプションに関する警告などを無限にオフにするための追加のオプションが必要になるように思われます。だから、ないのではないかと思います。

完全に異なる言語のビルドに同じオプションを使用することは、とにかく少し奇妙に思えます。makefileマクロとして定義され、さまざまなターゲットに適切に使用されるさまざまなオプションがあります。

于 2009-06-04T21:25:33.650 に答える
2

CFLAGS変数を設定すると、Cファイルにのみ影響します。CXXFLAGS変数を設定すると、C ++ファイルにのみ影響するため、ロジックを簡単に分離できます。

于 2009-06-05T06:50:56.037 に答える
0

残念ながら、gccには個々の警告をオンまたはオフにする機能がありません。一部の警告は特殊なケースであり、警告レベルを設定できますが、気にしない警告をオフにする方法はありません。

つまり、ファイルの最後に空の行がないことを誰が気にするでしょうか。それをオフにするパッチがあることは知っていますが、ソースからコンパイラを構築するのは少し多すぎます。

ビルドシステムでは、言語ごとに個別の警告セットを定義することをお勧めします。gccではなく他のコンパイラを使用する必要がある場合はどうなりますか?

于 2009-06-04T21:43:45.800 に答える
0

CファイルをC++としてコンパイルすることがオプションである場合は、-x c++

于 2009-06-05T06:42:54.117 に答える