8

残りのコードを追加してテストするためのコードをいくつか用意しています。 iが警告レベル4セットを持っているので 、これはc4702をもたらす:到達不能コードは警告を無効にするVS 2012のためにc4702が機能しないようです

警告Iは次のように無効にしようとした:

//do something 
    return 0; 

    /*-------------------------------------------------------------------------*/ 

#pragma warning(disable: 4702) 
    //real code 

が、コンパイラがまだうめき声。そして...私はエラーとしてすべての警告を処理するために設定している、これは私は、Visual Studio 2012のプレミアムを使用しています...

をコンパイルされませんので、

すべてのヘルプは喜んでいただければ幸いです。

答えて

17

プラグマをその内部ではなく、影響を受ける関数の開始前に配置するだけでよい場合があります。 MSDN docsから

:コード生成に関連したものである範囲4700から4999に警告番号について

、効果に警告の状態コンパイラは、Aのオープン中括弧に遭遇関数は残りの関数に対して有効になります。関数内の警告プラグマを使用して、4699を超える数の警告の状態を変更すると、関数の終了後にのみ有効になります。例えばので

#pragma warning(push) 
#pragma warning(disable: 4702) 
bool Do() { 
    return true; 
    return true; // No warning generated 
#pragma warning(pop) 
} 

bool DoDo() { 
    return true; 
    return true; // Generates C4702 
} 
+0

ありがとう!これはVisual Studio 2010にも当てはまります。 –

+0

これはVisual Studio 2013にも適用されます –

関連する問題