编译器警告(等级 4)C4702

无法访问的代码

当编译器后端检测到无法访问的代码时,它会生成 C4702 作为级别 4 警告。

若要解决此警告,请删除无法访问的代码,或确保所有源代码都可通过某些执行流访问。

示例

下面的示例生成 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
   }
}