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