Avertissement du compilateur (niveau 2) C4826
Mise à jour : novembre 2007
Message d'erreur
La conversion de 'type1' en 'type_2' est de type signe étendu. Cela peut provoquer un comportement inattendu au moment de l'exécution.
Conversion from 'type1 ' to 'type_2' is sign-extended. This may cause unexpected runtime behavior.
Cet avertissement indique que le compilateur a exécuté une extension de signature lorsqu'une opération de cast a transformé un pointeur 32 bits en une variable 64 bits.
Si l'extension a été exécutée sur un type de HANDLE Windows, il vaut mieux ignorer cet avertissement. Si l'extension a été exécutée sur un type pointeur, vous devez modifier le cast pour empêcher l'extension de signature (voir l'exemple ci-dessous).
C4826 est désactivé par défaut. Consultez Compiler Warnings That Are Off by Default pour plus d'informations.
Exemple
L'exemple suivant génère l'erreur 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;
}