GCC vs CC -kääntäjä
CC on nimi, joka annetaan UNIX-kääntäjäkomennolle. Sitä käytetään käyttöjärjestelmän oletuskokoonpanokomennona ja se voidaan myös suorittaa samalla komennolla. GCC puolestaan on GNU Compiler -käyttöjärjestelmä. GNU- ja Linux-käyttöjärjestelmissä on yleistä löytää CC olevan linkki, jotta skriptit voivat käyttää jompaa kumpaa kääntäjää vaihtokelpoisesti ja helposti. GNU-kääntäjän kokoelman ja CC-kääntäjän käytössä on havaittu erilaisia eroja. Nämä erot voidaan yleensä ryhmitellä kahteen pääryhmään. Yksi näistä on tarkempi, kun taas toinen ryhmä on yleisempi.
erot
Tärkein ero näiden kahden kaupan välillä liittyy C- ja C ++ -kääntäjiin. C ++-kääntäjät hyväksyvät C ++ -ohjelmat, mutta eivät käännä C-ohjelmia mielivaltaisesti. Tämä on totta, vaikka on osoitettu, että C-kielikoodi on mahdollista kirjoittaa osajoukkoon, jonka C ++ ymmärtää hyvin, vaikka monet C-ohjelmat eivät olisi kelvollisia C ++ -ohjelmia. Toisaalta C-kääntäjät hyväksyvät C-ohjelmat, mutta hylkäävät suurimman osan niissä suoritetuista C ++ -ohjelmista. Syynä tähän ongelmaan on se, että useimmat C ++ -ohjelmat ajavat rakenteita, joita ei ole saatavana C: ssä.
Näille ohjelmalle käytettävissä olevat kirjastot riippuvat suurelta osin kielestä. C ++ -ohjelmat voivat toimia C-kirjastoissa, mutta tämä on käyttöjärjestelmäkohtainen. C-ohjelmat eivät sitä vastoin voi käyttää C ++ -kirjastoja; siten C ++: lla on yleensä suurempi kirjasto käytettävissä kuin C: tä.
Solaris-järjestelmässä kääntäjän komennon tuottama objektikoodi ei ole millään tavoin yhteensopiva g ++: n tuottaman koodin kanssa, koska nämä ovat kaksi erillistä kääntäjää ja niiden käytännöt eroavat toisistaan. Tärkeimpiä eroja ovat poikkeusten käsittely ja nimien hallitseminen. On kuitenkin tärkeää huomata, että nimien hallinta on tärkeää, jotta estetään yhteensopivien esineiden yhdistäminen toisiinsa. Tämä viittaa käytännössä siihen tosiseikkaan, että CC: ssä kootun kirjaston käyttö edellyttää, että koko ohjelma kootaan CC: hen. Lisäksi, jos joudut käyttämään kirjastoa, joka on koottu CC: llä ja toista g ++: lla, kirjastojen kokoaminen on tehtävä uudelleen halutun toiminnallisuuden varmistamiseksi.
Muodostuneen asentajan laadulla GCC, joka on GNU Compiler Collection, on erittäin hyvä tässä tehtävässä. Alkuperäiset kääntäjät toimivat kuitenkin toisinaan paremmin. Intel-kääntäjillä voidaan sanoa olevan perusteelliset optimoinnit, joita ei vielä ole jäljellä GCC: ssä.
Molemmat kääntäjät ovat kaiken kaikkiaan uusia nykyisten standardien suhteen, vaikka standardikielen ja kääntäjän tukeman kielen välillä on pieniä eroja. Nämä standardit ovat (C ++ 98, C ++ 2003, C99). Vanhempi C89-tuki on saatavana molemmissa kääntäjissä, ja ymmärrys odotettavista vastauksista on välttämätöntä, jotta voidaan varmistaa, että kääntäjä toimii odotetusti. Kaiken kaikkiaan GCC näyttää keskittyvän elämän helpottamiseen laajennusten ja parannusten takia, jotka voidaan tehdä sille halutun tuloksen saamiseksi.
Yhteenveto
C- ja C ++ -kääntäjäkirjastojen ristiyhteensopivuudessa on ongelma.
C ++ -ohjelmat voivat toimia C-kirjastoissa, mutta tämä on käyttöjärjestelmäkohtainen.
CC-muodossa olevan kirjaston käyttö vaatii koko ohjelman kääntämistä CC: n eikä GCC: n kanssa.
Jos sinulla on kirjasto, joka on käännetty CC: ksi ja g ++: ksi, yksi kirjastoista on käännettävä uudelleen.
GCC tekee hienoa työtä laadukkaiden kokoonpanojen luomisessa.
Sekä CC että GCC kielen ominaisuuksissa ovat hyvät verrattuna nykyisiin standardeihin.