Advertencia del compilador (nivel 2) C4826
La conversión de 'tipo1 ' a 'tipo_2' produce una extensión de signo.Esto puede provocar un comportamiento en tiempo de ejecución inesperado.
Esta advertencia indica que el compilador realizó la extensión de signo cuando un puntero de 32 bits se convirtió en una variable de 64 bits.
Si la extensión se realizó en un tipo HANDLE de ventanas, es seguro omitir esta advertencia. Si la extensión se realizó en un tipo de puntero, debería modificar la conversión de tipos para evitar la extensión de signo (vea el ejemplo siguiente).
La advertencia C4826 está desactivada de manera predeterminada. Para obtener más información, vea Advertencias del compilador desactivadas de forma predeterminada.
Ejemplo
El ejemplo siguiente genera el error 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;
}