![]() Vorherige Seite |
![]() Eine Ebene hoch |
![]() Nächste Seite |
---|
Bei größeren Programmen kann es sinnvoll sein, den Quellcode auf mehrere Dateien zu verteilen. Dabei ist es wichtig, dass die Programmstücke in den einzelnen Dateien die nötigen Informationen aus den anderen Dateien erhalten.
Im Folgenden soll die Struktur für ein Programm beschrieben werden, welches die bereits beschriebenen Funktionen ClrScr und GetInt enthält. Die Definition (Implementierung) der beiden Funktionen soll jeweils in eigenen Dateien erfolgen. Damit sich die Programmblöcke der drei Dateien gegenseitig kennen, wird eine weitere Datei mit den nötigen Deklarationen erstellt. Diese Datei wird über den #include-Befehl in die Programmblöcke eingebunden. Man spricht von einer Include- oder Headerdatei die üblicherweise die Endung .h erhält.
In unserem Beispiel sind die Funktionen main, GetInt und ClrScr in den Dateien main.c, getint.c und clrscr.c implementiert. Die Deklarationen der Funktionen GetInt und ClrScr, sowie exemplarisch die maximale Anzahl von Zeilen MAXLINE sind in der Headerdatei myfuncs.h zusammengefasst. Das Einbinden dieser Datei erfolgt wie gewohnt mit dem #include-Befehl, nur dass der Dateiname statt in spitze Klammern jetzt in Doppelanführungszeichen gesetzt wird. Dadurch weiß der Übersetzer, dass er die Suche nach der Datei im aktuellen Verzeichnis beginnen soll (siehe Abschnitt 4.5.1).
Sie sollten in der Headerdatei nur die Funktionen Deklarieren, die von anderen Dateien aus aufgerufen werden. Oft ist es auch nützlich, die Deklarationen auf mehrere Headerdateien zu verteilen. Zum Beispiel könnten Sie die Deklarationen von GetInt und ClrScr in jeweils getrennten Dateien unterbringen. In den einzelnen Programmstücken laden Sie dann nur die Headerdateien, die Ihre benötigten Funktionen beinhalten.
In der Praxis werden mehrere Funktionen in einer Datei zusammengefasst. Zum Beispiel könnten Sie alle selbstgeschriebenen Funktionen, die mit der Bildschirmausgabe zu tun haben in eine Datei schreiben, während Sie alle Funktionen, die auf eine Datenbank zugreifen, in einer anderen Datei sammeln.
Sie können auch Variablen über mehrere Dateien verteilt verwenden. Wichtig ist nur, dass die Variable nur an einer Stelle Definiert wird. Deklarationen können beliebig wiederholt werden. Da die Headerdatei von mehreren Programmblöcken aus eingefügt wird, ist dies nicht der richtige Ort für die Definition einer Variablen. Das sollte in einem Der Programmblöcke selbst geschehen. Die Deklaration einer Variablen erfolgt durch das vorgestellte Schlüsselwort extern. Beispiel:
extern FILE *inp, *out; /* Ein- und Ausgabedatei */