编译器警告 C4958
“operation”: 指针算法不可验证
备注
使用指针算法将产生不可验证的映像。
有关详细信息,请参阅纯代码和可验证代码 (C++/CLI)。
“/clr:safe”编译器选项在 Visual Studio 2015 中已弃用,并且在 Visual Studio 2017 中不受支持。
此警告作为错误发出,可通过 warning 杂注或 /wd 编译器选项禁用该警告。
示例
下面的示例生成 C4958:
// C4958.cpp
// compile with: /clr:safe
// #pragma warning( disable : 4958 )
using namespace System;
int main( ) {
Int32 arr[] = new Int32[10];
Int32* p = &arr[0];
p++; // C4958
}
编译器使用指针算法实现数组操作。 因此,不可验证本机数组;请改用 CLR 数组。 有关详细信息,请参阅 数组。
下面的示例生成 C4958:
// C4958b.cpp
// compile with: /clr:safe
// #pragma warning( disable : 4958 )
int main() {
int array[5];
array[4] = 0; // C4958
}