Differenza tra GCC e CC Compiler Differenza tra

Anonim

GCC vs CC Compiler

CC è il nome assegnato al comando del compilatore UNIX. Viene utilizzato come comando di compilazione predefinito per il sistema operativo ed è anche eseguibile con lo stesso comando. GCC, d'altra parte, è il sistema operativo GNU Compiler. Sui sistemi che girano su GNU e Linux, è comune trovare il CC come un collegamento in modo che gli script possano usare il compilatore in modo intercambiabile e semplice. Ci sono varie differenze osservate riguardo all'uso della raccolta del compilatore GNU e del compilatore CC. Queste differenze possono generalmente essere raggruppate in due gruppi principali. Uno di questi è più specifico mentre l'altro gruppo è più generico.

Differenze

La differenza principale tra i due accordi con compilatori C e compilatori C ++. I compilatori C ++ accettano programmi C ++ ma non compilano arbitrariamente programmi in C. Questo è generalmente vero, sebbene sia stato dimostrato che è possibile scrivere un codice di linguaggio C in un sottoinsieme che può essere compreso bene dal C ++ anche quando molti programmi C non sono programmi C ++ validi. D'altra parte, i compilatori C accettano programmi C ma rifiutano la maggior parte dei programmi C ++ che li eseguono. La ragione per cui questo problema si pone è che la maggior parte dei programmi C ++ esegue costrutti non disponibili in C.

Le librerie disponibili per questi linguaggi di programmazione dipendono in gran parte dalla lingua. I programmi C ++ possono essere eseguiti su librerie C, ma questo è specifico per la piattaforma. I programmi C d'altra parte non possono usare le librerie C ++; quindi C ++ tende ad avere un set di librerie più grande disponibile di C.

Su Solaris, il codice oggetto che viene prodotto dal comando compiler non è in alcun modo compatibile con il codice prodotto da g ++ poiché questi sono due compilatori separati e il loro le convenzioni saranno diverse. I principali punti di differenza sono la gestione delle eccezioni e la manipolazione dei nomi. È tuttavia importante notare che il nome mangling è importante per impedire che gli oggetti compatibili siano collegati tra loro. Questo in effetti mette in evidenza il fatto che l'uso di una biblioteca compilata in CC richiede che l'intero programma sia compilato in CC. Inoltre, se è necessario utilizzare una libreria compilata con CC e un'altra con g ++, è necessario eseguire una ricompilazione delle librerie per garantire la funzionalità desiderata.

Nella qualità dell'assembler che viene generato, GCC, che è il GNU Compiler Collection, è estremamente bravo in questo compito. I compilatori nativi funzionano comunque meglio a volte. Si può dire che i compilatori Intel abbiano ottimizzazioni approfondite che devono ancora essere replicate in GCC.

Entrambi i compilatori sono del tutto nuovi rispetto agli standard attuali, anche se ci sono piccole differenze tra il linguaggio degli standard e il linguaggio supportato dal compilatore. Questi standard sono (C ++ 98, C ++ 2003, C99).Il supporto C89 meno recente è disponibile in entrambi i compilatori e la comprensione delle risposte previste è fondamentale per garantire che il compilatore venga implementato come previsto. Tutto sommato GCC sembra essere focalizzato a rendere la vita più facile a causa di estensioni e ritocchi che possono essere fatti per ottenere il risultato desiderato.

Riepilogo

C'è un problema con la compatibilità incrociata delle librerie del compilatore C e C ++.

I programmi C ++ possono essere eseguiti su librerie C, ma questa è specifica per la piattaforma.

Per utilizzare una libreria composta in CC, è necessario compilare l'intero programma con CC e non con GCC.

Se hai una libreria compilata in CC e g ++, una delle librerie deve essere ricompilata.

GCC svolge un lavoro meraviglioso nella creazione di assiemi di qualità.

Sia CC che GCC nelle funzionalità linguistiche sono eccellenti in relazione agli standard attuali.