Partager via


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