Kokoamisvirhe - Compilation error

Kääntämisvirhe viittaa tilaan, jolloin kääntäjä ei pysty kokoamaan tietokoneohjelman lähdekoodia joko koodivirheiden vuoksi tai epätavallisemmin itse kääntäjän virheiden vuoksi. Kokoelma virheilmoitus auttaa usein ohjelmoijia virheenkorjaus lähdekoodia. Vaikka kokoamisen ja tulkinnan määritelmät voivat olla epämääräisiä, yleensä kokoamisvirheet viittaavat vain staattiseen kokoamiseen eikä dynaamiseen kokoamiseen . On kuitenkin tärkeää huomata, että dynaamisella kääntämisellä voi silti olla teknisesti kokoamisvirheitä, vaikka monet ohjelmoijat ja lähteet saattavat tunnistaa ne ajonaikaisiksi virheiksi. Useimmat juuri oikeaan aikaan-kääntäjät , kuten Javascript V8 -moottori , viittaavat epämääräisesti kääntövirheisiin syntaksivirheinä, koska ne tarkistavat ne ajon aikana .

Esimerkkejä

Yleiset C ++ - kokoamisvirheet

  • Ilmoittamaton tunniste, esim .:

doy.cpp: In function `int main()': doy.cpp:25: `DayOfYear' undeclared (first use this function)

Tämä tarkoittaa, että muuttujaa "DayOfYear" yritetään käyttää ennen ilmoitusta.

  • Yleinen toiminto ilmoittamaton, esim .:

xyz.cpp: In function `int main()': xyz.cpp:6: `cout' undeclared (first use this function)

Tämä tarkoittaa, että ohjelmoija todennäköisesti unohti sisällyttää iostreamin .

  • Jäsennysvirhe, esim .:

somefile.cpp:24: parse error before `something'

Tämä voi tarkoittaa, että edellisen lauseen lopussa puuttuu kaksoispiste.

Sisäiset kääntäjävirheet

Sisäinen kääntäjävirhe (yleisesti lyhennettynä ICE) on virhe, joka ei johdu virheellisestä lähdekoodista, vaan itse kääntäjän virheestä. Ne voivat joskus olla työskennellyt noin tekemällä pieniä, merkityksettömiä muutoksia lähdekoodiin ympärillä rivi ilmaistaan virhe (jos tällainen linja on merkitty lainkaan), mutta joskus suurempia muutoksia on tehtävä, kuten refactoring koodin, välttämiseksi tietyt rakenteet. Eri kääntäjien tai eri versioiden käyttäminen saattaa ratkaista ongelman ja olla joissakin tapauksissa hyväksyttävä ratkaisu. Kun sisäinen kääntäjävirhe on saavutettu, monet kääntäjät eivät tuota vakiovirhettä, vaan tuottavat lyhennetyn version, johon on liitetty lisätiedostoja, jotka on tarkoitettu vain sisäisiin kääntäjävirheisiin. Tämän tarkoituksena on varmistaa, että ohjelma ei kaadu, kun kirjaat virheen, mikä tekisi virheen ratkaisemisen mahdottomaksi. Ylimääräiset liitetiedostot sisäiseen kääntäjä virheet yleensä erityinen formaatteja, että ne säästävät niin, kuten .dump on Java . Näitä formaatteja on yleensä vaikeampaa analysoida kuin tavallisia tiedostoja, mutta niillä voi silti olla erittäin hyödyllistä tietoa kaatumisen aiheuttaneen virheen ratkaisemiseksi.

Esimerkki sisäisestä kääntäjävirheestä:

somefile.c:1001: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://bugs.gentoo.org/> for instructions.

Viitteet