コンパイラの警告 (レベル 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
}
}