Ero GCC: n ja CC-kääntäjän välillä

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

CC on Unix-kääntäjän komennolle annettu nimi. Sitä käytetään käyttöjärjestelmän kääntäjäkomentona ja se on myös suoritettava samalla komennolla. GCC taas on GNU-kääntäjän käyttöjärjestelmä. GNU: lla ja Linuxilla toimivissa järjestelmissä on tavallista, että CC on linkki, jolloin skriptit voivat käyttää joko kääntäjää vaihdellen ja helposti. GNU-kääntäjä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

näiden kahden pääasiallinen ero koskee C-kääntäjiä ja C++ – kääntäjiä. C++ – kääntäjät hyväksyvät C++ – ohjelmia, mutta eivät käännä ohjelmia C: ssä mielivaltaisesti. Tämä pitää yleensä paikkansa, vaikka on osoitettu, että osajoukkoon on mahdollista kirjoittaa C-kielinen koodi, jonka C++ ymmärtää hyvin silloinkin, kun monet C-ohjelmat eivät ole kelvollisia C++ – ohjelmia. Toisaalta C-kääntäjät hyväksyvät C-ohjelmia, mutta hylkäävät suurimman osan niissä toimivista C++ – ohjelmista. Tämä ongelma johtuu siitä, että useimmat C++ – ohjelmat käyttävät konstruktioita, joita ei ole saatavilla C: ssä.

näille ohjelmakielille käytettävissä olevat kirjastot riippuvat paljolti kielestä. C++ – ohjelmat voivat esiintyä C-kirjastoissa, mutta tämä on alustakohtaista. C-ohjelmat taas eivät voi käyttää C++ – kirjastoja, joten C++: lla on yleensä käytössään suurempi kirjastojoukko kuin C.

Solariksessa kääntäjä-komennon tuottama oliokoodi ei ole millään tavalla yhteensopiva g++: n tuottaman koodin kanssa, sillä nämä ovat kaksi erillistä kääntäjää ja niiden konventiot eroavat toisistaan. Suurimmat erot ovat nimien poikkeusten käsittely ja mankelointi. On kuitenkin tärkeää huomata, että nimi mankelointi on tärkeää estää yhteensopivien esineiden linkittäminen toisiinsa. Tämä itse asiassa viittaa siihen, että CC: llä kootun kirjaston käyttö edellyttää, että koko ohjelma kootaan CC: llä. Jos tarvitset myös CC: llä ja toisella g++: lla koottua kirjastoa, kirjastojen uudelleenkompalointi on tehtävä halutun toiminnallisuuden varmistamiseksi.

syntyvän assemblerin laadussa GCC, joka on GNU: n Kääntäjäkokoelma, on äärimmäisen hyvä tässä tehtävässä. Natiivi kääntäjät eivät kuitenkaan toimi paremmin ajoittain. Intel kääntäjät voidaan sanoa olevan perusteellinen optimointeja, jotka ovat vielä toistettava GCC.

molemmat kääntäjät ovat kaiken kaikkiaan uusia nykyisiin standardeihin nähden, 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 saatavilla molemmissa kääntäjissä ja odotettujen vastausten ymmärtäminen on ratkaisevan tärkeää sen varmistamiseksi, että kääntäjä rullaa odotetulla tavalla. Kaiken kaikkiaan GCC näyttää keskittyvän tekemään elämästä helpompaa laajennusten ja hienosäädön ansiosta, joita sille voidaan tehdä halutun tuloksen saamiseksi.

Yhteenveto

c-ja C++ – kääntäjäkirjastojen ristiyhteensopivuudessa on ongelmia.

C++ – ohjelmat voivat esiintyä C-kirjastoissa, mutta tämä on alustakohtaista.

CC: ssä koostetun kirjaston käyttäminen edellyttää, että koko ohjelma kootaan CC: llä eikä GCC: llä.
Jos sinulla on CC: llä ja g++: lla käännetty kirjasto, jokin kirjastoista on käännettävä uudelleen.

GCC tekee loistavaa työtä laatukokonaisuuksien luomisessa.

sekä CC että GCC kielellisissä ominaisuuksissa ovat suuria suhteessa nykyisiin standardeihin.

Vastaa

Sähköpostiosoitettasi ei julkaista.