Sdílet prostřednictvím


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
}