C4826 de aviso (nível 2) do compilador
Conversão de 'tipo' para 'type_2' é a assinatura estendida.Isso pode causar comportamento inesperado em tempo de execução.
Este aviso indica que o compilador executada extensão do 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 identificador do windows, é seguro ignorar este aviso.Se a extensão foi executada em um tipo de ponteiro, você deve modificar a projeção para impedir que a extensão do sinal (veja exemplo abaixo).
C4826 está desativado por padrão.Consulte Avisos do compilador são desativados por padrão para obter mais informações.
Exemplo
O exemplo a seguir gera 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;
}