コンパイラの警告 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
}