C ist eine Freiformsprache . Das heißt, Sie können es auf viele Arten formatieren und es wird immer noch ein legales Programm sein.
Zum Beispiel eine Aussage wie
a = b * c;
könnte wie geschrieben werden
a=b*c;
oder wie
a
=
b
*
c
;
Also, wenn der Compiler die Zeilen sieht
temp = *a
*a = *b;
es denkt, es bedeutet
temp = *a * a = *b;
Das ist natürlich kein gültiger Ausdruck und der Compiler wird sich darüber beschweren, anstatt das fehlende Semikolon. Der Grund, warum es nicht gültig ist, ist, dass a
es sich um einen Zeiger auf eine Struktur handelt. Daher *a * a
wird versucht, eine Strukturinstanz ( *a
) mit einem Zeiger auf eine Struktur ( a
) zu multiplizieren .
Der Compiler kann das fehlende Semikolon zwar nicht erkennen, meldet aber auch den völlig unabhängigen Fehler in der falschen Zeile. Dies ist wichtig zu beachten, da unabhängig davon, wie oft Sie auf die Zeile schauen, in der der Fehler gemeldet wird, dort kein Fehler vorliegt. Manchmal müssen Sie bei solchen Problemen in den vorherigen Zeilen nachsehen , ob sie in Ordnung und fehlerfrei sind.
Manchmal müssen Sie sogar in einer anderen Datei suchen, um den Fehler zu finden. Wenn beispielsweise eine Header-Datei eine Struktur definiert, die zuletzt in der Header-Datei ausgeführt wurde, und das Semikolon zum Beenden der Struktur fehlt, liegt der Fehler nicht in der Header-Datei, sondern in der Datei, die die Header-Datei enthält.
Und manchmal wird es sogar noch schlimmer: Wenn Sie zwei (oder mehr) Header-Dateien einfügen und die erste eine unvollständige Deklaration enthält, wird der Syntaxfehler höchstwahrscheinlich in der zweiten Header-Datei angezeigt.
Damit verbunden ist das Konzept der Follow-up - Fehler. Einige Fehler, die normalerweise auf fehlende Semikolons zurückzuführen sind, werden als mehrere Fehler gemeldet . Aus diesem Grund ist es wichtig, beim Beheben von Fehlern von oben zu beginnen, da durch das Beheben des ersten Fehlers möglicherweise mehrere Fehler verschwinden.
Dies kann natürlich dazu führen, dass jeweils ein Fehler behoben wird und häufig neu kompiliert wird, was bei großen Projekten umständlich sein kann. Das Erkennen solcher Folgefehler ist jedoch mit Erfahrung verbunden, und nachdem Sie sie einige Male gesehen haben, ist es einfacher, die tatsächlichen Fehler herauszufinden und mehr als einen Fehler pro Neukompilierung zu beheben.