コンパイラの警告 (レベル 1) C4311
'変数' : ポインターを '型' から '型' へ切り詰めます。
この警告は 64 ビット ポインターの切り捨ての問題を検出します。 たとえば、コードが 64 ビット アーキテクチャ用にコンパイルされている場合、ポインターの値 (64 ビット) は int
(32 ビット) に代入されるときに切り詰められます。 詳細は、「ポインターの使用規則」を参照してください。
警告 C4311 が発生する一般的な原因の詳細については、「一般的なコンパイラ エラー」を参照してください。
次のコード例では、64 ビットをターゲットとしたコンパイル時に警告 C4311 を生成し、修正する方法を示します。
// C4311.cpp
// compile by using: cl /W1 C4311.cpp
int main() {
void* p = &p;
unsigned int i = (unsigned int) p; // C4311 for 64-bit targets
unsigned long long j = (unsigned long long) p; // OK
}