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
}
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin