C è un linguaggio in formato libero . Ciò significa che puoi formattarlo in molti modi e sarà comunque un programma legale.
Ad esempio una dichiarazione come
a = b * c;
potrebbe essere scritto come
a=b*c;
o simili
a
=
b
*
c
;
Quindi, quando il compilatore vede le righe
temp = *a
*a = *b;
pensa che significhi
temp = *a * a = *b;
Ovviamente questa non è un'espressione valida e il compilatore se ne lamenterà invece del punto e virgola mancante. Il motivo per cui non è valido è perché a
è un puntatore a una struttura, quindi *a * a
sta tentando di moltiplicare un'istanza di struttura ( *a
) con un puntatore a una struttura ( a
).
Sebbene il compilatore non sia in grado di rilevare il punto e virgola mancante, segnala anche l'errore totalmente non correlato sulla riga sbagliata. Questo è importante da notare perché non importa quanto guardi la riga in cui viene segnalato l'errore, non ci sono errori lì. A volte problemi come questo richiederanno che tu guardi le righe precedenti per vedere se sono a posto e senza errori.
A volte devi anche cercare in un altro file per trovare l'errore. Ad esempio, se un file di intestazione definisce una struttura l'ultima volta nel file di intestazione e manca il punto e virgola che termina la struttura, l'errore non sarà nel file di intestazione ma nel file che include il file di intestazione.
E a volte la situazione peggiora: se includi due (o più) file di intestazione e il primo contiene una dichiarazione incompleta, molto probabilmente l'errore di sintassi verrà indicato nel secondo file di intestazione.
Collegato a questo è il concetto di errori di follow-up . Alcuni errori, in genere dovuti a punti e virgola mancanti, vengono segnalati come errori multipli . Questo è il motivo per cui è importante iniziare dall'alto quando si correggono gli errori, poiché correggere il primo errore potrebbe far scomparire più errori.
Questo ovviamente può portare a correggere un errore alla volta e frequenti ricompilazioni che possono essere complicate con progetti di grandi dimensioni. Riconoscere tali errori di follow-up è qualcosa che viene fornito con l'esperienza, e dopo averli visti alcune volte è più facile scovare gli errori reali e correggere più di un errore per ricompilazione.