Verschil tussen GCC en CC Compiler

GCC vs CC Compiler

CC is de naam die wordt gegeven aan het UNIX-compileercommando. Het wordt gebruikt als de standaard compileropdracht voor uw besturingssysteem en is ook uitvoerbaar met dezelfde opdracht. GCC, aan de andere kant, is het GNU Compiler-besturingssysteem. Op systemen die op GNU en Linux draaien, is het gebruikelijk dat de CC een link is, zodat de scripts beide compilers onderling uitwisselbaar en eenvoudig kunnen gebruiken. Er zijn verschillende verschillen waargenomen met betrekking tot het gebruik van de GNU-compilercollectie en de CC-compiler. Deze verschillen kunnen over het algemeen in twee hoofdgroepen worden gegroepeerd. Een van deze is specifieker, terwijl de andere groep meer generiek is.

verschillen

Het belangrijkste verschil tussen de twee gaat over C-compilers en C ++ -compilers. De C ++ -compilers accepteren C ++ -programma's maar compileren geen programma's in C willekeurig. Dit is over het algemeen waar, hoewel is aangetoond dat het mogelijk is om een ​​C-taalcode te schrijven in een subset die goed begrepen kan worden door C ++ zelfs wanneer veel C-programma's geen geldige C ++ -programma's zijn. Aan de andere kant accepteren C-compilers C-programma's, maar verwerpen ze de meeste C ++ -programma's die erin worden uitgevoerd. De reden dat dit probleem optreedt, is dat de meeste C ++ -programma's constructies uitvoeren die niet beschikbaar zijn in C.

De beschikbare bibliotheken voor deze programmeertalen zijn grotendeels afhankelijk van de taal. C ++ -programma's kunnen op C-bibliotheken worden uitgevoerd, maar dit is platformspecifiek. C-programma's aan de andere kant kunnen geen C ++ -bibliotheken gebruiken; dus heeft C ++ de neiging om een ​​grotere bibliotheekset beschikbaar te hebben dan C.

Op Solaris is de objectcode die wordt geproduceerd door de compileropdracht, op geen enkele manier compatibel met de code die wordt geproduceerd door g ++, omdat dit twee afzonderlijke compilers zijn en hun conventies verschillen. De belangrijkste verschillen zijn uitzonderingsafhandeling en vermagering van namen. Het is echter belangrijk op te merken dat het verminken van namen belangrijk is om te voorkomen dat compatibele objecten met elkaar worden verbonden. Dit betekent feitelijk dat het gebruik van een in CC gecompileerde bibliotheek vereist dat het volledige programma in CC wordt gecompileerd. Als u een bibliotheek moet gebruiken die is gecompileerd met CC en een andere met g ++, moet u een nieuwe compilatie van bibliotheken uitvoeren om de gewenste functionaliteit te garanderen.

In de kwaliteit van assembler die wordt gegenereerd, is GCC, de GNU Compiler Collection, buitengewoon goed in deze taak. Native compilers werken echter soms beter. Van compilers van Intel kan worden gezegd dat ze grondige optimalisaties hebben die nog moeten worden gerepliceerd in GCC.

Beide compilers zijn al met al nieuw in de huidige normen, ook al zijn er kleine verschillen tussen de standaardtaal en de taal die de compiler ondersteunt. Deze standaarden zijn (C ++ 98, C ++ 2003, C99). Oudere ondersteuning voor C89 is beschikbaar in beide compilers en een goed begrip van de verwachte reacties is cruciaal om ervoor te zorgen dat de compiler naar verwachting wordt uitgerold. Al met al lijkt GCC erop gericht om het leven gemakkelijker te maken door uitbreidingen en tweaks die eraan kunnen worden gedaan om het gewenste resultaat te krijgen.

Samenvatting

Er is een probleem met de cross-compatibiliteit van compileerbibliotheken voor C en C ++.

C ++ -programma's kunnen op C-bibliotheken worden uitgevoerd, maar dit is platformspecifiek.

Om een ​​in CC gecompileerde bibliotheek te gebruiken, moet het hele programma gecompileerd worden met CC en niet met GCC.
Als u een bibliotheek hebt die is gecompileerd in CC en g ++, moet een van de bibliotheken opnieuw worden gecompileerd.

GCC doet geweldig werk in het creëren van kwaliteitsassemblages.

Zowel CC en GCC in taalfuncties zijn geweldig in relatie tot de huidige normen.