Aracılığıyla paylaş


Derleyici Uyarısı (düzey 1) C4312

'operation' : 'type1' öğesinden daha büyük boyutlu 'type2' öğesine dönüştürme

Bu uyarı, 64 bit işaretçi türüne 32 bit değer atama girişimini algılar; örneğin, 32 bit int veya long 64 bit işaretçisi atama.

Bu, işaret uzantısı oluştuğunda 32 bit'e uyan işaretçi değerleri için bile güvenli olmayan bir dönüştürme olabilir. 64 bit işaretçi türüne negatif bir 32 bit tamsayı atanırsa, işaret uzantısı işaretçi değerinin tamsayı değerinden farklı bir bellek adresine başvurmasına neden olur.

Bu uyarı yalnızca 64 bit derleme hedefleri için verilir. Daha fazla bilgi için bkz . İşaretçileri Kullanma Kuralları.

Aşağıdaki kod örneği, 64 bit hedefler için derlendiğinde C4312 oluşturur:

// C4312.cpp
// compile by using: cl /W1 /LD C4312.cpp
void* f(int i) {
   return (void*)i;   // C4312 for 64-bit targets
}

void* f2(__int64 i) {
   return (void*)i;   // OK
}