Aviso do compilador (nível 2) C4826
Conversão do tipo “- 1 " para “type_2” sinal- é estendido.Isso pode causar um comportamento inesperado de tempo de execução.
Esse aviso indica que o executou a extensão de compilador sinal quando um ponteiro de 32 bits foi convertido em uma variável de 64 bits.
Se a extensão foi executada em um tipo de ALÇA do windows, é seguro ignore esse aviso. Se a extensão foi executada em um tipo de ponteiro, você deve alterar a conversão para evitar a extensão de sinal (consulte o exemplo abaixo).
C4826 é desativada por padrão. Consulte Avisos de compilador desativados por padrão para maiores informações.
Exemplo
O exemplo a seguir produz C4826.
// C4826.cpp
// compile with: /W2 /c
#include <windows.h>
#pragma warning(default: 4826)
void * __ptr64 F1 (void * __ptr32 P ) {
return (void * __ptr64)P; // C4826
// try the following line instead
// return (void * __ptr64)(ULONGLONG)(ULONG)P;
}
void * __ptr64 F2 ( void * P ) {
return (void * __ptr64)P; // C4826
// try the following line instead
// return (void * __ptr64)(ULONGLONG)(ULONG)P;
}
unsigned __int64 F3r ( void * P ) {
return (unsigned __int64)P; // C4826
// try the following line instead
// return (unsigned __int64)(ULONGLONG)(ULONG)P;
}