Upozornění kompilátoru (úroveň 1) C4312
'operation': převod z 'type1' na 'type2' větší velikosti
Toto upozornění zjistí pokus o přiřadit hodnotu 32-bit 64-bit ukazatel typu, například přetypování 32-bit int nebo long na 64-bit ukazatel.
To může být potenciálně nebezpečný převod i pro ukazatel hodnot, které odpovídají v 32 bitů, když dojde k rozšíření přihlášení.Pokud je záporná 32bitové celočíselné přiřazen k typu ukazatel 64-bit, přihlášení rozšíření způsobí, že hodnota ukazatel odkazují na adresu paměti liší od na celočíselnou hodnotu.
Toto upozornění se pouze vydány pro kompilaci 64-bit cíle.Další informace naleznete v tématu pravidla pro použití ukazatele.
Následující příklad kódu generuje C4312, když je přeložen pro 64bitové cíle:
// 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
}