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 e long 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_te ptrdiff_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 valore size_t o time_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 variabile int.

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, vedere:

Vedi anche

Configurare progetti C++ per destinazioni x64 a 64 bit
Guida al porting e aggiornamento in Visual C++