Problemi comuni relativi alla migrazione di Visual C++ a 64 bit
Quando si usa il compilatore Microsoft C++ (MSVC) per creare applicazioni da eseguire in un sistema operativo Windows a 64 bit, è necessario tenere presente i problemi seguenti:
Nei sistemi operativi Windows a 64 bit gli oggetti
int
elong
sono valori a 32 bit. Per i programmi che si prevede di compilare per le piattaforme a 64 bit, assicurarsi di non assegnare puntatori alle variabili a 32 bit. Nelle piattaforme a 64 bit i puntatori sono valori a 64 bit e, se vengono assegnati a una variabile a 32 bit, il valore del puntatore verrà troncato.size_t
,time_t
eptrdiff_t
sono valori a 64 bit nei sistemi operativi Windows a 64 bit.time_t
è un valore a 32 bit nei sistemi operativi Windows a 32 bit in Visual Studio 2005 e versioni precedenti.time_t
è ora un valore Integer a 64 bit per impostazione predefinita. Per altre informazioni, vedere Gestione del tempo.È consigliabile controllare attentamente le parti di codice in cui un valore
int
viene elaborato come valoresize_t
otime_t
. È possibile che il numero diventi maggiore di un numero a 32 bit e che i dati vengano troncati quando il numero viene riassegnato alla variabileint
.
Il modificatore int
(formato esadecimale di printf
) non funzionerà nel modo previsto nei sistemi operativi Windows a 64 bit. Infatti, avrà effetto solo sui primi 32 bit del valore passato.
Usare %I32x per visualizzare un tipo integrale a 32 bit in formato esadecimale.
Usare %I64x per visualizzare un tipo integrale a 64 bit in formato esadecimale.
Il modificatore %p (formato esadecimale di un puntatore) funziona nel modo previsto nei sistemi operativi Windows a 64 bit.
Per altre informazioni, vedi:
Vedi anche
Configurare progetti C++ per destinazioni x64 a 64 bit
Guida al porting e aggiornamento in Visual C++