コンパイラの警告 (レベル 4) C4702
到達できないコード
コンパイラのバックエンドは、到達できないコードを検出すると、レベル 4 の警告として C4702 を生成します。
この警告に対処するには、到達できないコードを削除するか、何らかの実行フローによってすべてのソース コードに到達できることを確認します。
例
次の例では 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"
関数を使用すると、一部のバージョンのコンパイラでエラー C4702 が発生する可能性があります。 コンパイラは 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
}
}