C jest językiem o dowolnej formie . Oznacza to, że możesz go sformatować na wiele sposobów i nadal będzie to legalny program.
Na przykład stwierdzenie takie jak
a = b * c;
można napisać jak
a=b*c;
lub jak
a
=
b
*
c
;
Więc kiedy kompilator zobaczy linie
temp = *a
*a = *b;
myśli, że to znaczy
temp = *a * a = *b;
Nie jest to oczywiście prawidłowe wyrażenie i kompilator będzie narzekał na to zamiast na brakujący średnik. Przyczyną niepoprawności jest to, że a
jest wskaźnikiem do struktury, więc *a * a
próbuje pomnożyć instancję struktury ( *a
) za pomocą wskaźnika do struktury ( a
).
Chociaż kompilator nie może wykryć brakującego średnika, zgłasza również całkowicie niezwiązany błąd w niewłaściwym wierszu. Jest to ważne, aby zauważyć, ponieważ bez względu na to, jak bardzo patrzysz na wiersz, w którym zgłoszony jest błąd, nie ma tam żadnego błędu. Czasami takie problemy wymagają spojrzenia na poprzednie wiersze, aby sprawdzić, czy są w porządku i bez błędów.
Czasami trzeba nawet zajrzeć do innego pliku, aby znaleźć błąd. Na przykład, jeśli plik nagłówkowy definiuje strukturę jako ostatnią w pliku nagłówkowym i brakuje średnika kończącego strukturę, to błąd nie będzie w pliku nagłówkowym, ale w pliku, który zawiera plik nagłówkowy.
A czasami jest jeszcze gorzej: jeśli dołączysz dwa (lub więcej) pliki nagłówkowe, a pierwszy zawiera niepełną deklarację, najprawdopodobniej błąd składni zostanie wskazany w drugim pliku nagłówkowym.
Wiąże się z tym pojęcie dalszych błędów. Niektóre błędy, zazwyczaj spowodowane brakującymi średnikami, są zgłaszane jako błędy wielokrotne . Dlatego ważne jest, aby przy naprawianiu błędów zaczynać od góry, ponieważ naprawienie pierwszego błędu może spowodować zniknięcie wielu błędów.
Może to oczywiście prowadzić do naprawiania jednego błędu na raz i częstych ponownych kompilacji, co może być kłopotliwe w przypadku dużych projektów. Rozpoznawanie takich błędów uzupełniających jest jednak czymś, co wiąże się z doświadczeniem, a po kilkukrotnym ich zobaczeniu łatwiej jest odszukać prawdziwe błędy i naprawić więcej niż jeden błąd na rekompilację.