Udostępnij za pośrednictwem


C4826 (poziom 2) ostrzeżenia kompilatora

Konwersja z 'type1' na 'type_2' jest rozszerzony znak.Może to spowodować runtime nieoczekiwane zachowanie.

To ostrzeżenie wskazuje, że kompilator wskaźnik 32-bitowych została oddanych do zmiennej 64-bitowe, wykonywane rozszerzenie znak.

Jeśli rozszerzenie zostało wykonane dla typu dojście systemu windows, to można bezpiecznie zignorować to ostrzeżenie.Jeśli rozszerzenie została wykonana na typ wskaźnika, należy zmodyfikować oddanych do zapobieżenia rozszerzenie znak (Zobacz przykład poniżej).

C4826 jest domyślnie wyłączona.Zobacz Ostrzeżenia kompilatora, które są domyślnie wyłączone Aby uzyskać więcej informacji.

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