2012-06-07 45 views
12

エラーを発生させるサードパーティライブラリのファイルを含めると、警告にダウングレードできる可能性があります(-fpermissive)。しかし、これらの警告でコンパイルログを「汚染」したくないので、私はこのメッセージを完全に無効にしたい。gccでは、-fpermissive警告をミュートするにはどうすればよいですか?

これまでのところ、-fpermissiveオプションをdiagnostic pragmaと設定してファイルを含めると、 GCC以来

#pragma GCC diagnostic push 
#pragma GCC diagnostic warning "-fpermissive" 

#include <third-party-file.h> 

#pragma GCC diagnostic pop 

通常-fフラグの「正」と「負」のバージョンの両方を提供し、私は「無許可」機能を無視について考えた:何か

#pragma GCC diagnostic ignored "-fno-permissive" 
#include <third-party-file.h> 

をしかしそこ-fpermissiveフラグの "否定"バージョンではないようです(gcc 4.6.3を使用していますが、バージョン4.7.0 does not have itも使用しています)。

この動作を模倣する可能性はありますか?ありがとう!

+1

'-fno-permissive'がデフォルトです。 '-fpermissive'はフラグの"負 "と"正 "バージョンです。つまり、これを使用しないでください。コードを修正してください!たとえそれがあなたのものでないとしても。 – rubenvb

+1

-fno-permissiveは、オプションが存在しないため、デフォルトではありません。それが存在していた場合の動作はデフォルトになります。私はコードを修正することができますが、回避策のように思えます...とにかく、インクルードされたヘッダーのセット全体を修正することは本当にオプションではありません。 – piwi

+0

それはまさに私が意味していたものです。 '-fpermissive'はここでのハック/回避策です。とにかくどんなコードについて話していますか?おそらく、より良い選択肢があるかもしれません。 – rubenvb

答えて

11

それは少し遅く、このためかもしれないのですが、これらの一つは、あなたが望んで行うべき:

#pragma GCC diagnostic ignored "-fpermissive" 

または

#pragma GCC diagnostic ignored "-pedantic" 

あなたは完全な診断をスケルチする方法で、「無視」歴史的な理由から、-fpermissiveの逆数は-pedanticです。

+1

お返事ありがとうございます! '-pedantic'が' -fpermissive'の逆であることについて私がどこで見つけられるか知っていますか? – piwi

+1

残念ながら、それは明確に文書化されていません。 '-fpermissive'については、http://gcc.gnu.org/onlinedocs/gcc-4.8.0/gcc/C_002b_002b-Dialect-Options.html#index-fpermissive-154と' -pedantic'を参照してください: http://gcc.gnu.org/onlinedocs/gcc-4.8.0/gcc/Warning-Options.html#index-pedantic-257そして、あなたが行間を読んだら、あなたは何が起こっているのか理解しているかもしれません。 C++コンパイラはデフォルト状態として '-pedantic-errors'を持っています。しかし、私は実際のコードを指さずにあなたにそれを証明することはできません... – zwol

+0

...彼らはVCSのオンライン相互参照インデックスを持っていないので、実際のコードの関連ビットをダウンロードせずに見つけることができません私は今朝のために時間がありません。ごめんなさい。 – zwol

関連する問題