Programmiersprache C/C++
Header-Dateien
Header-Dateien werden mittels der Include-Direktive in C/C++-Quelltextdateien
eingefügt.
Den Inhalt von Header-Dateien bilden üblicherweise
-
die Vereinbarung von Makros und symbolischen Konstanten,
-
die Beschreibung der Aufrufschnittstelle von externen Funktionen,
-
die Deklaration von nachnutzbaren Datentypen.
Darüberhinaus kann eine Header-Datei die Deklaration von globalen
Variablen enthalten.
Absolut unüblich ist die direkte Aufnahme von ausführbaren
Anweisungen.
Einfügen von Header-Dateien in Quelltextdateien
#include <name.h>
Die Header-Datei name.h wird in den Include-Verzeichnissen des
C/C++-Systems gesucht.
Für die Festlegung der Include-Verzeichnisse gibt es mehrere
Möglichkeiten:
-
es gibt - systemabhängig - ein festes Stamm-Include-Verzeichnis
z.B. unter Unix /usr/include
-
das Stamm-Include-Verzeichnis liegt standardmäß in einem
festen Verzeichnis relativ zu dem Verzeichnis, in dem sich der Compiler
befindet
z.B. ..\INCLUDE für einige DOS-Compiler
-
weitere Include-Verzeichnisse können über einen Parameter beim
Compiler-Aufruf festgelegt werden
z.B. cc ... -I/usr/local/include ... unter Unix
-
weitere Include-Verzeichnisse können interaktiv über die
Oberfläche eines Programmiersystems bestimmt werden
z.B. Borland-C++
Es kann auch ein relativer Pfadname angegeben werden, z.B.
<sys/name.h>. Absolute Pfadnamen sind üblich.
#include "name.h"
Die Header-Datei name.h wird im aktuellen Verzeichnis gesucht.
Die Notation "..." anstelle von <...> wird
vorzugsweise für eigene Header-Dateien eingesetzt.
Es kann auch ein relativer oder ein absoluter Pfadname angegeben werden.
Mehrfaches Einfügen von Header-Dateien
Da es üblich ist, daß Header-Dateien selbst wieder mittels
Include-Direktive andere Header-Dateien einfügen, kann es passieren,
daß eine Header-Datei mehrfach eingefügt wird.
In dieser Situation kann es Re-Definitionen kommen, die meist zumindest
eine Compiler-Warnung bei der Übersetzung auslösen.
Häufig werden auch symbolische Konstanten wie z.B. TRUE, FALSE,
NULL, ... unabhängig voneinander (und manchmal konträr)
definiert.
Um dies zu verhindern sollte jede Header-Datei in der Lage sein zu erkennen,
ob sie bereits einmal eingefügt wurde. Dazu wird im Anfangsteil der
Header-Datei eine symbolische Konstante definiert. Es kann dann abgefragt
werden, ob diese symbolische Konstante bereits existiert.
Beispiel (Gnu-C):
/* This is file stdio.h */
#ifndef _stdio_h_
#define _stdio_h_
... Definitionen von stdio.h ...
#endif /* _stdio_h_ */
Zurück zum Menü
Zurück zur vorigen Seite
Weiter zur nächsten Seite
P. Böhme, 17.12.1995