Sie sich eine Idee für ein Programm einfallen.
2 Nehmen Sie den Editor und schreiben Sie den Quelltext.
3 Kompilieren Sie das Programm mit einem C-Compiler.
4 Weinen Sie bitterlich über Fehler (kann entfallen).
5 Linken Sie das Programm mit einem Linker.
6 Weinen Sie bitterlich über Fehler (kann entfallen).
7 Starten Sie das Programm und beginnen Sie mit Tests.
8 Raufen Sie sich die Haare, wenn schwere Fehler auftreten (kann entfallen).
9 Beginnen Sie von vorn (immer notwendig).
Es ist nicht erforderlich, dass Sie das auswendig können. Das ist wie mit der Anleitung auf einer Flasche mit Haarshampoo (die gibt es dort wirklich – wenn Ihnen langweilig ist wie mir neulich, dann können Sie mangels anderen Lesestoffs in der Badewanne die Anleitung lesen). Keiner liest so was, weil wir alle auch so wissen, wie man mit Shampoo umgeht. Sie werden bald ganz oft diese Schritte durchlaufen, sodass Sie sich das nicht merken müssen.
(Dennoch ist Wissen über den »Entwicklungsprozess« nützlich. Sie können bei Ihren Freunden lamentieren, dass Sie mitten in einem Entwicklungsprozess eines C-Programms stecken. Schauen Sie, wie sich deren Augen weiten, wenn sie mit Ihrem Wissen über Programmierung konfrontiert werden!)
Schritt 1 ist am härtesten. Der Rest folgt dann von selbst.
Dies wird in ein paar Kapiteln so einfach wie Haare waschen werden.
Der Quelltext (oder auch Sourcecode)
Wenn Sie ein Programm erstellen, sagen Sie dem Computer, was zu tun ist. Da der Computer Sprache nicht verstehen kann und ihm Schläge – egal, wie gut Sie sich dabei fühlen – nicht viel ausmachen, kommunizieren Sie letztendlich mit dem Computer, indem Sie eine Mitteilung schreiben – eine Datei auf Festplatte.
Um die Mitteilung zu schreiben, benutzen Sie ein Programm namens Texteditor. Das ist die primitive Version einer Textverarbeitung, ohne all die Formatierungen und Ausdruckvarianten. Der Texteditor lässt Sie Text eintippen – das ist schon alles.
Wenn Sie Ihren Texteditor benutzen, erzeugen Sie eine Datei, die man Quelltext oder auch Sourcecode nennt. Das Besondere an dieser Datei ist, dass sie Instruktionen für den Computer enthält, die diesem bestimmte Aufträge erteilen. Und obwohl es angenehm wäre, wenn man Programme in der Form »mach mal ’n lustiges Geräusch« schreiben könnte, so muss man doch eine Formulierung benutzen, die der Computer versteht. In unserem Fall werden die Anweisungen in der Sprache C geschrieben.
Wenn Sie mit dem Schreiben der Anweisungen fertig sind, speichern Sie diese in einer Datei. Benennen Sie den ersten Teil des Dateinamens mit dem Namen, den das fertige Programm später bekommen soll. Wenn Sie zum Beispiel ein Spiel mit dem Namen »UFOs« entwickeln, sollte die Datei mit dem Quelltext im ersten Teil vor dem Punkt den Namen Ufos
erhalten.
Der zweite Teil des Dateinamens, die Extension oder Dateinamenerweiterung, muss c
sein, für die Sprache C. Das ist wichtig! Textdateien enden auf txt
. Für die Sprache C müssen die Dateien mit c
enden, hier also Ufos.c
.
Der Quelltext ist eine Textdatei auf Festplatte. Er enthält Anweisungen für den Computer, die in der Sprache C geschrieben sind.
Sie benutzen einen Texteditor, um den Quelltext zu erzeugen.
Die Datei mit dem Quelltext endet mit einem c als Dateinamenerweiterung.
Der erste Teil des Dateinamens sollte der Name des Programms sein.
Seien Sie ein bisschen clever beim Benennen Ihrer Dateien.
Der Compiler
Nachdem der Quelltext getippt und gespeichert wurde, muss er in eine Sprache übersetzt werden, die der Computer verstehen kann. Dieser Job wird vom Compiler erledigt.
Der Compiler ist ein spezielles Programm, das die Anweisungen in der Quelltextdatei liest. Der Compiler nimmt sich jede Anweisung vor und übersetzt sie in einen unverständlichen Code, der nur vom Mikroprozessor verstanden wird.
Falls alles glattgeht und der Compiler mit Ihrem Quelltext zufrieden ist, erzeugt er eine Objektcode-Datei, eine weitere Datei, die gespeichert wird. Die Objektdatei hat den gleichen Namen wie die Quelltextdatei, endet aber auf .obj
. Für das UFO-Spiel wäre dies also Ufos.obj
.
Versteht der Compiler irgendetwas nicht, zeigt er eine Fehlermeldung auf dem Bildschirm an. An diesem Punkt können Sie mit den Zähnen knirschen und wütend aufspringen. Gehen Sie zurück zum Texteditor und ändern Sie den Quelltext so, dass der angemahnte Fehler beseitigt ist (das ist leichter, als es klingt). Danach versuchen Sie erneut, den Quelltext zu kompilieren.
Nachdem der Compiler seine Arbeit getan hat, ist das Programm fertig. Nun wird ein dritter Schritt benötigt, das Linken. Dieses Thema wird gleich im Anschluss im Abschnitt »Der Linker« behandelt.
Der Compiler nimmt die Informationen im Quelltext und übersetzt sie in Anweisungen, die der Computer versteht. Das Resultat ist eine neue Datei – die Objektdatei.
Die Objektdatei endet mit obj. Der erste Teil des Namens ist genauso wie der Name der Datei mit dem Quelltext.
Übrigens: Alle diese Dateien werden im gleichen Verzeichnis oder Unterverzeichnissen gespeichert. Wie man hier ein wenig aufräumt, dazu kommen wir weiter hinten in diesem Kapitel im Abschnitt »Erst das Chaos, dann die Ordnung«.
Fehler passieren. Wenn der Compiler etwas findet, was er nicht versteht, beendet er die Kompilierung und erzeugt eine Fehlermeldung auf dem Bildschirm. Obwohl das bedrohlich klingt, sind diese Fehler in der Regel einfach zu beheben.
Einige der C-Größen nennen den Inhalt einer Objektdatei auch Objektcode.
Nicht notwendige Informationen über Objektdateien
Sind Objektdateien notwendig? Nein, nicht wirklich. Sie sind ein Zwischenschritt. Von Ihrem Quelltext erzeugt der Compiler Anweisungen in Maschinensprache, die für den Mikroprozessor direkt verständlich sind. Eigentlich könnte an dieser Stelle das endgültige Programm erzeugt werden, aber stattdessen wird eine Objektdatei erzeugt.
Der Grund für die Objektdateien liegt im Verwalten von großen Programmierprojekten. In diesen Fällen arbeitet man an vielen Quelltextdateien. Warum? Damit das Programm handhabbar bleibt. Zum Beispiel kann Ihre Textverarbeitung die 500 Seiten eines Romans als eine einzige Datei verwalten, aber es ist einfacher, wenn man auf der Basis von Kapiteln arbeitet. Für große Programme macht es Sinn, diese in kleinere Portionen oder auch Module aufzuteilen. Jedes Modul wird separat kompiliert und verschiedene Objektdateien werden erzeugt. Es ist dann Aufgabe des Linkers, diese separaten obj
-Dateien in eine einzige ausführbare exe
-Datei zusammenzubinden.
Zum jetzigen Zeitpunkt Ihrer C-Karriere sind die Programme zu klein, um sich Gedanken über mehrere Objektdateien zu machen. Aber der Linker ist notwendig, um die eine Objektdatei in das endgültige Programm zu verwandeln.
Der Linker
Der Linker ist ein Programm, genau wie der Compiler. Seine Aufgabe besteht in der Erzeugung fertiger Programme.
Der Linker tut Folgendes: Er nimmt die vom Compiler erzeugte obj
-Datei, macht sie ein wenig hübsch und erzeugt die fertige Programmdatei. Diese Datei endet auf exe
, was der übliche Name für