Errore di compilazione - Compilation error
L'errore di compilazione si riferisce a uno stato in cui un compilatore non riesce a compilare una parte del codice sorgente del programma per computer , a causa di errori nel codice o, più insolitamente, a causa di errori nel compilatore stesso. Un messaggio di errore di compilazione spesso aiuta i programmatori a eseguire il debug del codice sorgente. Sebbene le definizioni di compilazione e interpretazione possano essere vaghe, generalmente gli errori di compilazione si riferiscono solo alla compilazione statica e non alla compilazione dinamica . Tuttavia, è importante notare che la compilazione dinamica può ancora tecnicamente avere errori di compilazione, sebbene molti programmatori e sorgenti possano identificarli come errori di runtime. La maggior parte dei compilatori just-in-time , come il motore Javascript V8 , si riferiscono ambiguamente agli errori di compilazione come errori di sintassi poiché li controllano in fase di esecuzione .
Esempi
Errori comuni di compilazione in C ++
- Identificatore non dichiarato, ad esempio:
doy.cpp: In function `int main()':
doy.cpp:25: `DayOfYear' undeclared (first use this function)
Ciò significa che la variabile "DayOfYear" sta tentando di essere utilizzata prima di essere dichiarata.
- Funzione comune non dichiarata, ad esempio:
xyz.cpp: In function `int main()': xyz.cpp:6: `cout' undeclared (first use this function)
Ciò significa che il programmatore molto probabilmente ha dimenticato di includere iostream .
- Errore di analisi, ad esempio:
somefile.cpp:24: parse error before `something'
Ciò potrebbe significare che manca un punto e virgola alla fine dell'istruzione precedente.
Errori interni del compilatore
Un errore interno del compilatore (comunemente abbreviato come ICE) è un errore che si verifica non a causa di un codice sorgente errato, ma piuttosto a causa di un bug nel compilatore stesso. A volte possono essere aggirati apportando piccole modifiche insignificanti al codice sorgente attorno alla riga indicata dall'errore (se tale riga è indicata), ma a volte è necessario apportare modifiche più grandi, come il refactoring del codice, per evitare certi costrutti. L'utilizzo di un compilatore diverso o di una versione diversa del compilatore può risolvere il problema e in alcuni casi essere una soluzione accettabile. Quando viene raggiunto un errore del compilatore interno, molti compilatori non restituiscono un errore standard, ma invece producono una versione abbreviata, con file aggiuntivi allegati, che vengono forniti solo per errori interni del compilatore. Questo per assicurare che il programma non si blocchi durante la registrazione dell'errore, il che renderebbe quasi impossibile la risoluzione dell'errore. I file aggiuntivi allegati per errori di compilazione interne di solito hanno formati speciali che Salva con nome, come ad esempio .dump per Java . Questi formati sono generalmente più difficili da analizzare rispetto ai file normali, ma possono comunque contenere informazioni molto utili per risolvere il bug che causa l'arresto anomalo.
Esempio di un errore del compilatore interno:
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.