2017-01-07 26 views
0

I持って、次の三つの連続警告:のVisual C++の#pragma警告

Warning C4068 unknown pragma ...\microsoft visual studio 14.0\vc\include\comutil.h 53 
... 54 
... 54 

関連の行は、次のとおりです。

#pragma warning(push) 
#pragma warning(disable: 4290) 
#pragma warning(disable: 4310) 

ザ・プラットフォームツールセットは、通常のV140で、ターゲットプラットフォームのバージョンは8.1です。警告レベルはW3です。

現在の#pragma warningのドキュメントを読んでいます。

私は最初の行が警告設定の現在の状態を保存することを理解しています。
#pragma warning(pop)が以前に保存された状態を復元するまで、次の2行で警告4290 4310のコードを無効にします。

なぜ#pragma warningが不明と表示されるのですか?私は

C/C++ -> Preprocess to a file -> Yes (/P) 

を設定し、プロジェクトのプロパティページで

+0

@ハンスパッサント:そうです! GNUプロジェクトは、 '#pragma warning'があると仮定しないで、プリプロセッサと衝突する'警告 'マクロを定義しています。あなたが答えにあなたのコメントをするなら、私はスレッドを閉じることができ、このタイプの問題の専門家からのコーディング戦略も歓迎されるでしょう。 – antonio

+0

あなたは理由を知っているので、確かに自分で答えを書くことができますか?あなたはもう私の助けを必要としません。コメントに[廃止]とフラグを立てるだけです。 –

答えて

0

私は展開すべてのマクロを(hereを参照)を含む、各C++ファイルの*.iファイルにデバッグディレクトリを作成したプロジェクトを、再構築。
ファイルは非常に大きいですが、コンパイラがいつヘッダファイルにアクセスして終了するかを示す便利な#lineディレクティブも含まれています。だからは、エラーを発生させるヘッダーファイルの名前のためにを盗んで、のwarningも拡張されていることを検出できました。

サードパーティのGNUプロジェクト(このタイプの#pragmaが定義されていない)からいくつかのヘッダーが含まれていたので、#define warningマクロがコンパイラの警告を出すのは比較的簡単でした。

関連する問題