編譯器警告 (層級 1) C4312
'operation' : 將 'type1' 轉換為較大的 'type2'
這項警告偵測到嘗試將 32 位元值指派給 64 位元指標類型的動作,例如,將 32 位元 int
或 long
轉型為 64 位元指標。
這可能是不安全的轉換,即使在發生正負號擴充時納入 32 位元指標值也是如此。 負的 32 位元整數指派給 64 位元指標類型,正負號擴充會使指標值參考不同於整數值的記憶體位址。
只會針對 64 位元編譯目標發出這個警告。 如需詳細資訊,請參閱 使用指標 的規則。
為 64 位元目標編譯時,下列程式碼範例會產生 C4312:
// 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
}
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應