Предупреждение компилятора C4958
"operation": арифметика указателя не является проверяемой
Замечания
Использование арифметики указателей создает непроверяемый образ.
Дополнительные сведения см. в разделе "Чистый и проверяемый код" (C++/CLI).
Параметр /clr:safe компилятора устарел в Visual Studio 2015 и не поддерживается в Visual Studio 2017.
Это предупреждение выдается в качестве ошибки, и его можно отключить с помощью директивы pragma 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. Дополнительные сведения см. в описании array.
В следующем примере возникает ошибка C4958:
// C4958b.cpp
// compile with: /clr:safe
// #pragma warning( disable : 4958 )
int main() {
int array[5];
array[4] = 0; // C4958
}