Non un elenco completo, ma alcune delle cose che ho incontrato durante la conversione di una grande base di codice C ++:
Biblioteche, ovviamente. Trova tutti loro e guarda cosa hanno. Nel mio caso, abbiamo deciso di passare alle librerie Open Source per la gestione di JPEG e la compressione dei dati, e così abbiamo compilato la nostra. Le librerie commerciali potrebbero darti più problemi.
Conversioni puntatore. Sui sistemi a 32 bit, di solito sizeof(int) == sizeof(void *)
, e molte persone lavorano su questa base. Su un sistema a 64 bit un round trip dal puntatore a int
al puntatore di solito perde metà del puntatore. Il tuo compilatore dovrebbe essere in grado di aiutarti qui.
Valori delle dimensioni dell'oggetto dati. Sarebbe un buon momento per passare e modificare tutti i valori di dimensione in size_t
, se li trovi e le differenze tra puntatori e ptrdiff_t
. Questo non sarà necessariamente un problema, ma dal momento che eravamo spinti dalla dimensione dei dati su cui stavamo lavorando volevo assicurarmi che potesse crescere il più possibile.
Dimensione dell'oggetto. Qualsiasi struct
o class
che hai con i membri del puntatore aumenterà, e se stai modificando qualsiasi int
in size_t
o ptrdiff_t
. Di nuovo, è improbabile che questo sia un problema, ma potresti voler controllare l'I / O. Se stai facendo un I / O binario, hai davvero bisogno di esaminare cosa viene inserito e prodotto. Se stai inviando o ricevendo dati attraverso un protocollo fisso, devi guardarlo. Fai un grep per union
e controlla ciascuno per le modifiche.