コンパイラの警告 (レベル 4) C4702

更新 : 2007 年 11 月

エラー メッセージ

制御が渡らないコードです。

この警告は、"Visual Studio .NET 2003 : 制御が渡らないコード" に対して行われたコンパイラ準拠作業の結果です。コンパイラ (バック エンド) は、制御が渡らないコードを検出した場合に、レベル 4 の警告である C4702 を生成します。

Visual Studio .NET 2003 と Visual Studio .NET の両方のバージョンの Visual C++ で有効なコードを作成するには、制御が渡らないコードを削除するか、すべてのソース コードがなんらかの実行フローで到達できるようにします。

詳細については、「Summary of Compile-Time Breaking Changes」を参照してください。

使用例

次の例では C4702 エラーが生成されます。

// C4702.cpp
// compile with: /W4
#include <stdio.h>

int main() {
   return 1;
   printf_s("I won't print.\n");   // C4702 unreachable
}

/GX/EHc/EHsc、または /EHac を指定してコンパイルし、extern C 関数を使用する場合、コードに制御が渡らなくなります。これは、extern C 関数はスローしないと見なされ、catch ブロックに到達できないからです。関数によるスローができるのでこの警告が有効ではないと思われる場合は、スローされる例外に応じて、/EHa または /EHs を指定してコンパイルします。

詳細については、「/EH (例外処理モデル)」を参照してください。

次の例では C4702 エラーが生成されます。

// C4702b.cpp
// compile with: /W4 /EHsc
#include <iostream>

using namespace std;
extern "C" __declspec(dllexport) void Function2(){}

int main() {
   try {
      Function2();
   }
   catch (...) {
      cout << "Exp: Function2!" << endl;   // C4702
   }
}