Partilhar via


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