web-dev-qa-db-ja.com

gccで特定の警告を無効にする

Microsoftコンパイラでは、#pragmaを使用して特定の警告を無効にできますが、他の警告は無効にできません。これは、コンパイラーが「実行する必要がある」何かについて警告する場合、非常に便利な機能です。

この時点でのGCCには同様の機能がありますか?それはまだこの機能を持たないだろうという想像を絶するほど明白な十分な機能のようですが、Web上の古い情報はこの機能が存在しないことを示唆しています。

GCCで使用するものは何ですか?

具体的には、「abc」のような複数文字の定数を使用するのが好きです。これらは基本的に256の数値として効果的に評価されます。これは非常に便利な機能ですが、警告をトリガーします。 caseステートメントで4つの文字列をオンにするのに非常に便利です。

37
Matthias Wandel

Gccマニュアルから:

   Many options have long names starting with -f or with -W---for example,
   -fforce-mem, -fstrength-reduce, -Wformat and so on.  Most of these have
   both positive and negative forms; the negative form of -ffoo would be
   -fno-foo.  This manual documents only one of these two forms, whichever
   one is not the default.

しかし、ソースレベルの警告が無効になっているかどうかを確認している場合、その機能がgccに存在するかどうかはわかりません。

24
Mark Rushakoff

-Wno-multichar

複数文字定数( 'FOOF')が使用されている場合は警告しません。これらは実装で定義された値を持っているため、通常、ユーザーのコードのタイプミスを示し、移植可能なコードでは使用しないでください。

詳細

12
dfa

内部のソースコードの書き込み:

#pragma GCC diagnostic ignored "-Wno-multichar"

// code with  warnings but wont be displayed now...
8
pPanda_beta