编译器警告 C4957

“cast”:从“cast_from”到“cast_to”的显式强制转换是不可验证的

注解

强制转换会导致不可验证的映像。

某些转换是安全的(例如,触发用户定义的转换的 static_cast 和一个 const_cast)。 确保 safe_cast 生成可验证的代码。

有关详细信息,请参阅纯代码和可验证代码 (C++/CLI)

“/clr:safe”编译器选项在 Visual Studio 2015 中已弃用,并且在 Visual Studio 2017 中不受支持

此警告作为错误发出,可通过 warning 杂注或 /wd 编译器选项禁用该警告。

示例

以下示例生成 C4957:

// C4957.cpp
// compile with: /clr:safe
// #pragma warning( disable : 4957 )
using namespace System;
int main() {
   Object ^ o = "Hello, World!";
   String ^ s = static_cast<String^>(o);   // C4957
   String ^ s2 = safe_cast<String^>(o);   // OK
}