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