编译器警告(等级 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
}
}