Поделиться через


Предупреждение компилятора 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
}