Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
«Operação» : conversão de «tipo1» para «tipo2» de maior dimensão
Observações
Este aviso deteta uma tentativa de atribuir um valor de 32 bits a um tipo de ponteiro de 64 bits, por exemplo, transmitindo um ponteiro de 32 bits int ou long de 64 bits.
Isso pode ser uma conversão insegura, mesmo para valores de ponteiro que se encaixam em 32 bits quando ocorre a extensão de sinal. Se um inteiro negativo de 32 bits for atribuído a um tipo de ponteiro de 64 bits, a extensão de sinal fará com que o valor do ponteiro faça referência a um endereço de memória diferente do valor do inteiro.
Este aviso é emitido apenas para destinos de compilação de 64 bits. Para obter mais informações, consulte Regras para usar ponteiros.
Example
O exemplo de código a seguir gera C4312 quando ele é compilado para destinos de 64 bits:
// 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
}