Dela via


Kompilatorvarning (nivå 1) C4312

"operation" : konvertering från "type1" till "type2" med större storlek

Anmärkningar

Den här varningen identifierar ett försök att tilldela ett 32-bitarsvärde till en 64-bitars pekartyp, till exempel att gjuta en 32-bitars int eller long till en 64-bitars pekare.

Detta kan vara en osäker konvertering även för pekarvärden som får plats i 32 bitar när teckentillägget inträffar. Om ett negativt 32-bitars heltal tilldelas till en 64-bitars pekartyp, gör teckentillägget att pekarvärdet refererar till en minnesadress som skiljer sig från värdet för heltalet.

Den här varningen utfärdas endast för 64-bitars kompileringsmål. Mer information finns i Regler för att använda pekare.

Example

Följande kodexempel genererar C4312 när den kompileras för 64-bitarsmål:

// 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
}