GCC ja CC-kääntäjä

Anonim

GCC vs. CC-kääntäjä

CC on UNIX-kääntäjäkomentolle annettu nimi. Sitä käytetään oletuskomentokäskyksi käyttöjärjestelmässäsi ja se on myös suoritettavissa samalla komennolla. GCC, toisaalta, on GNU Compiler-käyttöjärjestelmä. Järjestelmissä, jotka toimivat GNU: n ja Linuxin tavoin, on tavallista, että CC on linkki, niin että komentosarjat voivat käyttää joko kääntäjää vaihdettavasti ja helposti. GNU-kääntäjän kokoelmasta ja CC-kääntäjältä on havaittu erilaisia ​​eroja. Nämä erot voidaan yleensä jakaa kahteen pääryhmään. Yksi näistä on tarkempaa, kun taas toinen ryhmä on yleisempi.

erot

Tärkein ero näiden kahden välillä on C-kääntäjät ja C ++-kääntäjät. C ++-kääntäjät eivät hyväksy C ++ -ohjelmia, mutta eivät koota C-ohjelmia mielivaltaisesti. Tämä on yleensä totta, vaikka on osoitettu, että on mahdollista kirjoittaa C-kielikoodi alijoukossa, jota C ++ ymmärtää hyvin, vaikka monet C-ohjelmat eivät ole kelvollisia C ++ -ohjelmia. Toisaalta C-kääntäjät hyväksyvät C-ohjelmat, mutta hylkäävät useimmat C ++ -ohjelmista, jotka toimivat niissä. Syynä tähän ongelmaan on, että useimmat C ++ -ohjelmat tekevät rakenteita, joita ei ole saatavilla C: ssä.

Näiden ohjelmakielten käytettävissä olevat kirjastot riippuvat suuresti kielestä. C ++ -ohjelmat voivat suorittaa C-kirjastoissa, mutta tämä on alustalle ominaista. C-ohjelmat eivät toisaalta voi käyttää C ++ -kirjastoja; joten C ++: llä on yleensä suurempi kirjastosarja kuin C.

Solarisissa kääntäjäkomennon tuottama objektikoodi ei ole millään tavalla yhteensopiva g ++: n tuottaman koodin kanssa, koska nämä ovat kahta erillistä kääntäjää ja niiden yleissopimukset eroavat toisistaan. Tärkeimmät eroavat kohdat ovat poikkeusten käsittely ja nimet. On kuitenkin tärkeää huomata, että nimeäminen on tärkeää, jotta estetään yhteensopivien objektien yhdistäminen yhteen. Tämä tosiasiassa korostaa sitä, että CC: ssä koottu kirjaston käyttö edellyttää, että koko ohjelma kootaan CC: ssä. Lisäksi, jos tarvitset kirjastoa, joka on koottu CC: llä ja toinen g ++: llä, kirjastojen uudelleenmuokkaus on tehtävä halutun toiminnon varmistamiseksi.

GCC, joka on GNU-kääntäjäkokoelma, tuottaa laadukkaita kokoajia, jotka ovat erittäin hyviä tässä tehtävässä. Alkuperäiset kääntäjät toimivat kuitenkin paremmin ajoittain. Intel-kääntäjiä voidaan sanoa sisältävän perusteelliset optimoinnit, joita ei vielä ole kopioitu GCC: ssä.

Molemmat kääntäjät ovat kaikki uutuuksia nykyisiin standardeihin, vaikka standardien kielen ja kielen välillä on pieniä eroja, joita kääntäjä tukee. Nämä standardit ovat (C ++ 98, C ++ 2003, C99). Vanhempi C89-tuki on saatavana sekä kääntäjistä että ymmärrystä odotetuista vastauksista, mikä on ratkaisevan tärkeää, jotta kääntäjä kääntyisi odotetusti. Kaiken kaikkiaan GCC näyttää olevan keskittynyt tekemään elämä helpommaksi laajennusten ja vääntömomenttien ansiosta, jotka voidaan tehdä sille halutun tuloksen saamiseksi.

Yhteenveto

C- ja C ++-kääntäjäkirjastojen yhteensopivuus on ongelma.

C ++ -ohjelmat voivat suorittaa C-kirjastoissa, mutta tämä on alustalle ominaista.

CC: ssä koottu kirjasto vaatii, että koko ohjelma kootaan CC: llä eikä GCC: llä. Jos sinulla on CC: n ja g ++: n koottu kirjasto, yksi kirjastoista täytyy kääntää uudelleen.

GCC tekee mahtavaa työtä laadukkaiden kokoonpanojen luomisessa.

Sekä CC- että GCC-kielikoodit ovat hyviä suhteessa nykyisiin standardeihin.