-fpermissive
で警告にダウングレードできるエラーを発生させるサードパーティライブラリのファイルを含めています。しかし、これらの警告でコンパイルログを「汚染」したくないので、このメッセージを完全に無効にしたいと思います。
これまでのところ、ファイルを含めるときに-fpermissive
オプションに diagnostic pragma を設定しています。何かのようなもの:
#pragma GCC diagnostic Push
#pragma GCC diagnostic warning "-fpermissive"
#include <third-party-file.h>
#pragma GCC diagnostic pop
Gccは通常、-f
フラグの「ポジティブ」バージョンと「ネガティブ」バージョンの両方を提供するため、「非許可」機能を無視することを考えました:
#pragma GCC diagnostic ignored "-fno-permissive"
#include <third-party-file.h>
しかし、-fpermissive
フラグの「ネガティブ」バージョンは存在しないようです(私はgcc 4.6.3を使用していますが、バージョン4.7.0 それがない )です。
この動作を模倣できる可能性はありますか?ありがとう!
tldr:GCC 4.7以降、fpermissive出力をオフにすることはできません。
これをここに投稿するだけで、可視性が向上します。残念ながら、zwolの回答(意図はよく、古いGCCバージョンのユーザーには役立つ可能性があります)は、GCCの最新バージョンでは機能しません。 GCC 4.8以降では、fpermissive出力をオフにすることはできません。 OPへのコメントのo11cは、これを追跡する次のバグを有益に提供します。
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81787
これは「RESOLVED INVALID」の状態であるため、オフにできないことは予想される動作であり、変更する予定はありません。
これには少し遅れるかもしれませんが、これらの1つはあなたが望むことをするべきです:
#pragma GCC diagnostic ignored "-fpermissive"
または
#pragma GCC diagnostic ignored "-pedantic"
「無視」とは、診断を完全に無効にする方法であり、-fpermissive
の逆は-pedantic
です。これは、歴史的な理由によるものです。