Udostępnij za pośrednictwem


Ostrzeżenie kompilatora (poziom 1) C4311

'zmienna' : obcinanie wskaźnika z 'typ do 'typ'

To ostrzeżenie wykrywa problemy z obcinaniem wskaźnika 64-bitowego. Jeśli na przykład kod jest kompilowany dla architektury 64-bitowej, wartość wskaźnika (64 bity) zostanie obcięta, jeśli zostanie przypisana do int wartości (32 bity). Aby uzyskać więcej informacji, zobacz Reguły używania wskaźników.

Aby uzyskać dodatkowe informacje o typowych przyczynach ostrzeżenia C4311, zobacz Typowe błędy kompilatora.

Poniższy przykład kodu generuje kod C4311 podczas kompilowania dla obiektu docelowego 64-bitowego, a następnie pokazuje, jak go naprawić:

// C4311.cpp
// compile by using: cl /W1 C4311.cpp
int main() {
   void* p = &p;
   unsigned int i = (unsigned int) p;   // C4311 for 64-bit targets
   unsigned long long j = (unsigned long long) p;   // OK
}