Udostępnij za pośrednictwem


Ostrzeżenie kompilatora C4958

"operation" : arytmetyka wskaźnika nie jest weryfikowalna

Uwagi

Użycie arytmetyki wskaźnika spowoduje wygenerowanie niezweryfikowalnego obrazu.

Aby uzyskać więcej informacji, zobacz Pure and Verifiable Code (C++/CLI).

Opcja /clr:safe compiler jest przestarzała w programie Visual Studio 2015 i nieobsługiwana w programie Visual Studio 2017.

To ostrzeżenie jest wystawiane jako błąd i można je wyłączyć z ostrzeżeniem pragma lub /wd opcji kompilatora.

Przykład

Poniższy przykład generuje kod 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
}

Kompilator implementuje operacje tablic z arytmetyczną wskaźnika. W związku z tym macierze natywne nie są weryfikowalne; Zamiast tego należy użyć tablicy CLR. Aby uzyskać więcej informacji, zobacz tablicę.

Poniższy przykład generuje kod C4958:

// C4958b.cpp
// compile with: /clr:safe
// #pragma warning( disable : 4958 )

int main() {
   int array[5];
   array[4] = 0;   // C4958
}