Ostrzeżenie kompilatora (poziom 2) C4826
Konwersja z "type1" na "type_2" jest znak rozszerzony.Może to spowodować nieoczekiwane zachowanie.
To ostrzeżenie wskazuje, że kompilator wskaźnik 32-bitowe był oddanych do 64-bitowej zmiennej, wykonywane rozszerzenie znak.
Jeśli rozszerzenie zostało wykonane dla typu UCHWYT windows, to bezpiecznie zignorować to ostrzeżenie.Jeśli rozszerzenie została wykonana na typ wskaźnika, należy zmodyfikować cast, celem przeciwdziałania rozprzestrzenianiu znak (patrz przykład poniżej).
C4826 jest domyślnie wyłączona.Aby uzyskać więcej informacji, zobacz Domyślnie wyłączone ostrzeżenia kompilatora.
Przykład
Poniższy przykład generuje 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;
}