Domanda

Quali sono tutti i problemi che prevedi nel farlo.

È stato utile?

Soluzione

  1. VC 6 non è più supportato da Microsoft , in alcun modo. Se qualcosa va storto e per qualsiasi motivo non siamo stati in grado di compilare, saremmo completamente da soli incapaci di ottenere assistenza da Microsoft. Sembra improbabile che qualcosa possa andare storto in questo modo, ma se il codice in questione è una delle principali fonti di entrate, allora devi prendere le cose in equilibrio.
  2. È impossibile compilare il codice a 64 bit in VC6 . I programmi a 32 bit funzionano su Windows a 64 bit, almeno per ora. Ma se è necessario sfruttare la potenziale velocità e i guadagni di memoria derivanti dalla creazione di un prodotto nativo a 64 bit (ad esempio, essendo in grado di utilizzare più di 3 GB di RAM in un singolo processo), VC6 è fuori.
  3. VC9 ha una conformità agli standard molto migliore . La conformità agli standard di VC6 era molto scarsa. Questo è in realtà sia un motivo per port e forse un motivo per non farlo. I programmatori che hanno utilizzato VC6 si sono abituati a fare le cose nel 'Wrong Way', e gran parte di quel codice dovrà essere riformattato per funzionare in VC9.

Un semplice esempio di # 3 sopra è un ciclo for:

for( int n = 0; n < someMax; ++n )
{
  // do stuff
}

printf("Did %d stuffs", n);

Questo codice funziona in VC6 ma non in VC9. In realtà è un programma malformato - il fatto che VC6 lo consenta è un difetto in VC6.

La decisione di trasferire da VC6 a VC9 non è una schiacciata. Devi considerare quanto sarà difficile il progetto e bilanciarlo con eventuali guadagni e problemi che eviti.

È necessario rivedere gli elenchi Microsoft delle modifiche non autorizzate al momento di decidere se e come intraprendere questo progetto. Il primo elenco, interrompendo le modifiche da VC6 a VC7, è un elenco enorme. Gli altri sono molto più piccoli in confronto. Il che suggerisce che se porti da VC6 a qualcosa, dovrebbe essere almeno il 2005.

Altri suggerimenti

Di quanto sta parlando una base di codice?

Il porting di un piccolo programma (che è per lo più codice C ++ non basato su modelli) dovrebbe essere abbastanza banale.

Tuttavia, una volta ho dovuto convertire 100.000 righe di codice utilizzando il modello da VC6 a VC2005, ed è stata una settimana da incubo (5 giorni di lavoro), il problema principale era che dovevo riparare a mano circa il 30% del problemi (il 70% era abbastanza banale e poteva risolverli con la ricerca e sostituzioni). Ma un altro problema era il fatto che il vecchio codice non aveva casi di test e nessun framework di test, quindi anche dopo aver ottenuto l'applicazione da compilare e non segfault e avere un aspetto ok (?), Non avevo la certezza che tutto funzionasse effettivamente come doveva essere.

Quindi in realtà il mio consiglio è di considerare la dimensione del codice e la disponibilità dei test e anche se il codice deve davvero essere portato (nel mio caso era un Sì, ma non è sempre il caso, specialmente se il software sarà presto sbiadito)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top