Verschil tussen GCC en CC Compiler Verschil tussen

Anonim

GCC vs CC Compiler

CC is de naam die wordt gegeven aan de UNIX-compileeropdracht. 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 behandelt 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 C ++ heeft de neiging om een ​​grotere verzameling bibliotheken beschikbaar te hebben dan C.

Op Solaris is de objectcode die door de compileropdracht wordt geproduceerd, op geen enkele manier compatibel met de code die wordt geproduceerd door g ++, aangezien dit twee afzonderlijke compilers zijn en hun conventies zullen 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 aan elkaar worden gekoppeld. 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 waarborgen.

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 door de compiler wordt ondersteund. 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 kunnen worden gedaan om het gewenste resultaat te bereiken.

Samenvatting

Er is een probleem met de compatibiliteit van C- en C ++ -compilibratiebibliotheken.

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

Als u een in CC gecompileerde bibliotheek wilt gebruiken, moet het hele programma worden gecompileerd 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 fantastisch werk in het maken van kwaliteitsassemblages.

Zowel CC als GCC in taalfuncties zijn uitstekend in vergelijking met de huidige normen.