2009-07-17 7 views
9

Ho usato gcc, g ++ per lo sviluppo di applicazioni C, C++ fino ad ora e l'ho trovato sorprendente. Ma sfogliando Stack Overflow ho trovato molti membri che affermano che la segnalazione degli errori nel compilatore Comeau è molto più di ogni altro compilatore. È vero? Non ho investito in alcuna versione commerciale di un compilatore. Vale veramente la pena spendere soldi per una versione commerciale di un compilatore C/C++ quando gcc, g ++ sta facendo il trucco?Il compiler di Comeau vale rispetto a gcc?

+3

in inglese normale, * un * punto interrogativo è sufficiente. Risolto il problema per te – jalf

+4

forse avrebbe dovuto "ripararlo per te !!!!!!!!!" – jalf

+0

@jaff "GRAZIE !!!!!!!!!!!!!!" – Michael

risposta

9

La mia esperienza con la scrittura di C++ è che la compilazione del codice con più di un compilatore è un ottimo modo per trovare casi d'angolo dispari nel codice. Nel nostro caso, abbiamo usato gcc, Apple gcc e il compilatore di Visual Studio cl (che è gratuito). Quando su Windows, preferisco il compilatore cl dal momento che si compila più velocemente (circa cinque volte più veloce per noi) e produce codice migliore (circa il 30% più veloce l'ultima volta che ho controllato). Tuttavia, quale compilatore produce il codice più veloce dipende sempre dall'applicazione. Nel nostro caso particolare, il compilatore Intel non è così bravo a produrre codice veloce contrario all'opinione pubblica, quindi non c'è alcun incentivo reale a usarlo.

Se avessimo i soldi da spendere, la compilazione con Comeau sarebbe utile per facilitare il controllo supplementare della conformità agli standard. A parte questo, sono contento dei compilatori che usiamo.

1

Direi di no, g ++ è un ottimo compilatore con un'enorme comunità che lo supporta, non c'è davvero bisogno di passare a un compilatore commerciale a meno che tu non voglia il supporto che offre, che a meno che tu non sia un grande sviluppatore probabilmente non lo fai. Con g ++ e VS Express su Windows, non c'è davvero alcun bisogno di spendere soldi per un compilatore. Luoghi migliori per spendere i tuoi soldi/tempo!

+0

a parte la conformità agli standard superiori, intendi? – jalf

0

Credo che la versione di rilascio di Comeau sia piuttosto stabile. Quando acquisti il ​​compilatore commerciale C/C++ pagherai principalmente per le specifiche caratteristiche. Dovresti decidere se hai bisogno di quelle funzioni.

Se non si dispone di requisiti speciali, il compilatore GNU C/C++ è un'ottima scelta.

2

Se sei soddisfatto degli strumenti di gcc, continua con loro. Non aggiustare ciò che non è rotto. Vengono utilizzati quotidianamente dal lotti di persone, e sono certamente piuttosto buoni.

Detto questo, gcc è stato criticized per "rallentare a ogni rilascio e creare codice scadente". Non conosciamo la "schifezza", ma stiamo compilando sezioni time-critical con compilatori specifici per l'hardware (ad esempio Intel). In alcuni casi, in realtà, creano codice molto più veloce rispetto a quanto ottenuto da gcc. Ma di solito la differenza non ha importanza, comunque.

7

La caratteristica killer del compilatore Comeau è la sua conformità (incluso C++ 03!) E un'eccellente segnalazione degli errori.

C'è un modo online per provarlo troppo: http://www.comeaucomputing.com/tryitout/

Il compilatore Comeau è sicuramente valsa la pena se queste caratteristiche sono la pena a voi.

Cappelli al compilatore Comeau!

+0

Non dimenticare la portabilità. – MSalters

+6

Giusto per evidenziare che, AFAIK, il compilatore Comeau è implementato utilizzando il front-end di Edison Design Group (EDG). Penso che una buona parte del credito dovrebbe andare a EDG! –

5

ci sono tre uso principale del compilatore di Comeau:

  • mira piattaforme aventi soltanto un compilatore C

  • avere un compilatore aggiuntivo con buona reputazione conformità e buon messaggio di errore

  • sperimentazione con caratteristiche che sono disponibili solo con esso (sperimentare con modelli esportati è stata la mia ragione per comprarlo anni fa, per esempio)

Si noti che il debug non è uno degli usi. Genera il codice C che viene poi compilato dal compilatore C. Usa le direttive #line in modo che tu possa andare passo dopo passo nel tuo codice, ma per fare di più, avrai lo stesso problema di quando esegui il debug di qualsiasi lingua usando C come linguaggio intermedio: il debugger non è a conoscenza della convenzione della lingua di partenza