Problemi comuni relativi alla migrazione di Visual C++ a 64 bit
Aggiornamento: novembre 2007
Quando si utilizza Visual C++ per creare applicazioni da eseguire su un sistema operativo Windows a 64 bit, tenere presenti le seguenti problematiche:
Sui 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. Sulle 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.
Sui sistemi operativi Windows a 64 bit size_t, time_t e ptrdiff_t sono valori a 64 bit.
Sui sistemi operativi Windows a 32 bit, time_t è un valore a 32 bit nelle versioni Visual C++ antecedenti a Visual C++ 2005. Per impostazione predefinita, in Visual C++ 2005 e versioni successive time_t è un valore integer a 64 bit. Per ulteriori informazioni, vedere Gestione del tempo.
Si consiglia di 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 %x printf (formato esadecimale di int) non funzionerà nel modo previsto sui sistemi operativi Windows a 64 bit. Infatti, avrà effetto solo sui primi 32 bit del valore passato.
Utilizzare %I32x per visualizzare un valore integer su un sistema operativo Windows a 32 bit.
Utilizzare %I64x per visualizzare un valore integer su un sistema operativo Windows a 64 bit.
Il formato esadecimale per un puntatore %p funziona nel modo previsto su un sistema Windows a 64 bit.
Per ulteriori informazioni, vedere: