Condividi tramite


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:

Vedere anche

Altre risorse

Programmazione a 64 bit con Visual C++

Porting e aggiornamento di programmi