2012-10-15 54 views
6

#pragma regionでGCC警告を削除するにはどうすればよいですか? コードを簡単に見るためにpragma regionを追加しましたが、#pragma regionに警告が表示されます。 私はVisual Studio 2010を使用しています。#pragma regionでGCC警告を削除するには?

+4

を使用する必要がありますか? – logoff

+0

おそらく役に立ちます:http://dbp-consulting.com/tutorials/SuppressingGCCWarnings.html – altendky

+0

私の提案:コードをリファクタリングしてください。領域を別の機能に変えます。 – user877329

答えて

6

GCCでは使用しないでください。

#ifndef __GNUC__ 
#pragma region 
#endif 

// Stuff... 

#ifndef __GNUC__ 
#pragma endregion 
#endif 

非常に格好良いか読めないが、GCCの警告なしにコードのコンパイルを行います::)私は、現時点ではと考えることができます

最も簡単な解決策は、それ用のプリプロセッサの条件を使用することです。

+0

読みやすくするために簡単にマクロ化することができます – altendky

+1

@altendky Visual Studioエディタで折りたたむことができる領域を示すために使用されているため、わかりません。これは、Visual Studioエディターパーサーがどれほど優れているかによって異なります。 –

+6

@altendky - どのように?マクロの* replacement-list *の中の単一の '#'( '##'とは対照的に)はプリプロセッサ指令を識別しません。代わりにstringify演算子です。 '# '演算子に続くものは、マクロパラメータ名でなければなりません。 –

8

GCCは、この警告フラグを有する:#pragma指令が発生したとき

-Wunknown-プラグマ はGCCによって理解されていない警告します。このコマンドラインオプションを使用すると、システムヘッダファイル内の未知のプラグマについても、警告メッセージ が発行されます。これは ではなく、 警告が-Wallコマンドラインオプションによってのみ有効になっている場合です。

いつものように、それを否定することができます。つまり、未知のプラグマには警告が表示されません。つまり、-Wno-unknown-pragmasを使用します。

-Wallのように、この警告をオンにするコマンドラインフラグの後には、-Wno-unknown-pragmasがなければなりません。これにより、すべての未知のプラグマについても警告が無効になりますので注意して使用してください。

+3

このオプションは_all_pragmaの警告を無効にしますが、どのプラグマが警告を生成すべきかを選択することはできません。 –

+0

はい、@JoachimPileborgと、この診断( 'unknown-pragmas')は、' omp'プラグマなどを混乱させると、時には命を救うことができます... –

4
#pragma GCC diagnostic push 
#pragma GCC diagnostic ignored "-Wunknown-pragmas" 
... Code using Unknown pragmas ... 
#pragma GCC diagnostic pop 
+1

あなたはおそらくWindowsでビルドしているのでこれを#ifdef __GNUC__で囲みます – Eric

3

MSVC特定のプラグマのようですので、あなたは、Visual Studioの2010年にGCCでコンパイルしている

#ifdef _MSC_VER 
#pragma region 
#endif 

<code here> 

#ifdef _MSC_VER 
#pragma endregion 
#endif 
関連する問題