include
, ein Leerzeichen, eine öffnende spitze Klammer, das Wort stdio
, einen Punkt, ein h
und eine schließende spitze Klammer. Verwenden Sie keine Großbuchstaben. Drücken Sie zweimal , um die Zeile zu beenden und eine leere Folgezeile zu erhalten.
Schreiben Sie das Wort int
, ein Leerzeichen und dann gleich main
, gefolgt von einer öffnenden runden Klammer und einer schließenden runden Klammer. Drücken Sie
int main()
Die nächste Zeile enthält nur ein Zeichen: eine öffnende geschweifte Klammer {
. Drücken Sie
{
Drücken Sie die
printf("Dieses Programm hat einen Fehler\n")
Geben Sie printf
(als ein Wort), gefolgt von einer öffnenden runden Klammer und einem Anführungszeichen ein und dann Dieses Programm hat einen Fehler!
. Geben Sie einen Backslash \
und ein kleines n
ein, dann wieder Anführungszeichen und eine schließende runde Klammer. Drücken Sie anschließend
In der nächsten Zeile drücken Sie zunächst return
gefolgt von der 0
und einem Semikolon ein.
Beginnen Sie die nächste Zeile, indem Sie
.
}
Im ganzen Buch werden Sie angewiesen, den Quelltext einzugeben, zu speichern, zu kompilieren, zu linken und zu starten. Diese Anweisungsfolge schreibe ich ab jetzt kürzer: »Kompilieren Sie das Programm« oder »Starten Sie das Programm«. Dies ist entschuldbar, weil ich nicht jedes Mal die ganze Folge wiederholen kann. Außerdem werden Sie mit der Zeit so vertraut damit, sodass Sie diese Wiederholungen gar nicht brauchen.
Junge, was ʼn Fehler!
Fehler in Error.c
! Tauchalarm! Schockzustand!
Okay, wir habenʼs ja erwartet. (Um genau zu sein: Vielleicht haben Sie den Fehler ja schon vorher ungewollt erzeugt.) \Abhängig vom verwendeten Compiler wird in irgendeiner Form folgender Fehler erscheinen:
\Quelltexte\kap02\error.c|5|error: expected ';' before 'return'|
Es können auch noch andere Meldungen angezeigt werden, aber die Zeile 5 wird irgendwo in der Meldung so oder so ähnlich vorkommen. Zudem zeigt eine integrierte Entwicklungsumgebung wie Code::Blocks an der fehlerhaften Zeile eine rote Markierung an, wie in Abbildung 2.1.
Abbildung 2.1: Hilfreich – die Zeile des Fehlers wird markiert
Bisher sieht die Fehlermeldung ziemlich rüde aus. Aber was ihr an Freundlichkeit fehlt, enthält sie dafür an Informationen. Egal, welchen Compiler Sie verwenden, Sie sollten in der Meldung folgende Informationen erhalten:
Das Programm, das den Fehler enthält: Error.c
Die Zeile, in der der Fehler steht, hier also Zeile 5 (aber trauen Sie der Angabe nicht zu sehr – der Fehler kann auch eine Zeile höher oder tiefer sein)
Der Typ des Fehlers, hier also ein Syntaxfehler (es fehlt etwas)
Der Ort des Fehlers, also vor return
Es mag nicht ganz klar sein, was falsch ist, aber man bekommt eine Menge Hinweise. Am wichtigsten die Zeilennummer:
…error.c(5):
Der Fehlertyp ist genauso wichtig. Ein Syntaxfehler bedeutet Tippfehler, in der Sprache C ist ein Semikolon ;
am Ende eines jeden Satzes notwendig, genauso wie Sie am Ende eines Satzes einen Punkt machen.
Die Lösung? Ändern Sie Ihren Quelltext und beseitigen Sie den Fehler, indem Sie in Error.c
in der Zeile 5 das fehlende ;
an das Ende der Zeile setzen.
Fehler sind nicht das Ende der Welt! Eher der Anfang.
Die Zeilennummer bezieht sich auf eine Zeile im Quelltext. Deswegen verwenden auch alle Texteditoren Zeilennummern, die auf dem Bildschirm irgendwo am oberen oder unteren Rand angezeigt werden. Diese Nummern stehen aber nicht im eigentlichen Quelltext.
In integrierten Entwicklungsumgebungen wird der Cursor in der Regel sogar auf die Stelle oder Zeile gesetzt, an beziehungsweise in der der Fehler zu finden ist – oder zumindest in die Nähe.
Die Zeilennummer ist nicht unbedingt exakt, der Fehler kann auch in einer vorigen oder einer Folgezeile sein. Aber die Angabe ist zumindest sehr nahe dran.
Andere beliebte Syntaxfehler außer dem vergessenen Semikolon sind fehlende Klammern, runde oder geschweifte, fehlende Anführungszeichen und überzählige Klammern.
Wahrscheinlich kommen Ihnen die Fehlermeldungen von Code::Blocks unverständlich vor, lassen Sie sich Zeit – Sie programmieren ja erst seit Kurzem. Nach einiger Zeit verstehen Sie Fehlermeldungen von Code::Blocks und dem GCC viel besser.
Sie können Fehlermeldungen in eine Suchmaschine eintippen und danach suchen – Sie werden viele Beispiele finden, die Ihnen erklären, was nicht klappt. Denn andere hatten das gleiche Problem oft zuvor.
Möglicherweise denken Sie sich nun: »Computer, wenn du schon weißt, wo der Fehler ist, dann mach ihn doch auch weg.« Aber Computer arbeiten nicht so; solche Schlussfolgerungen sind ihnen fremd. Das ist eben der Nachteil von »Mach, was ich sage«: Computer können keine Gedanken lesen, also müssen SIE präzise sein. Immerhin sind sie sehr kleinlich, wenn es darum geht, Fehler zu finden.
Das fehlerhafte Programm reparieren
Um das Ganze wieder geradezubiegen, müssen wir das Programm reparieren. Dazu muss der Quelltext editiert, gespeichert und neu kompiliert werden.
Das Programm Error.c
kann korrigiert werden, indem ein fehlendes Semikolon eingefügt wird. Die Zeile sollte also wie folgt aussehen:
printf("Dieses Programm arbeitet fehlerfrei\n");
Die Zeile sollte immer noch eingerückt sein. Ich habe auch gleich noch den Text geändert, zusätzlich zum fehlenden Semikolon am Zeilenende.
Speichern Sie Error.c
und kompilieren