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
}