Compartilhar via


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;
}