次の方法で共有


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