Die Include-Dateien für die C-Programmierschnittstelle werden mit zwei verschiedenen Produkten ausgeliefert:
Include-Dateien für POSIX-Funktionen werden als Komponente POSIX HEADER mit dem Produkt POSIX-BC ausgeliefert, Include-Dateien für BS2000-Funktionen mit CRTE (siehe auch Tabelle im Abschnitt "Systemvoraussetzungen").
Sie werden bei der Übersetzung auf Grund der Präprozessoranweisung #include
in das Programm kopiert. Wie dies geschieht, ist ausführlich in den C- und C++-Benutzerhandbüchern dargestellt.
In einer Include-Datei sind deklariert bzw. definiert:
Funktionen bzw. entsprechende Makros
externe Variablen
symbolische Konstanten und Datentypen
Für den Aufruf von C-Bibliotheksfunktionen aus C++-Quellen enthalten die Include-Dateien für alle Funktionen und Daten extern "C"
-Deklarationen.
Im POSIX-Subsystem sind die Include-Dateien in den Standard-Dateiverzeichnissen /usr/include
und /usr/include/sys
abgelegt.
Im BS2000 stehen die Include-Dateien als PLAM-Bibliothekselemente vom Typ S in den Bibliotheken $.SYSLIB.CRTE
(für BS2000-Funktionen) und $.SYSLIB.POSIX-HEADER
(für POSIX-Funktionen).
Include
-Anweisungen, in denen die Namen der Include-Elemente Schrägstriche (/) für Verzeichnisse enthalten, werden vom Compiler auch im Falle von PLAM-Bibliothekselementen akzeptiert. Jeder Schrägstrich in Namen von benutzereigenen und StandardInclude-Elementen wird intern zur Suche in PLAM-Bibliotheken in einen Punkt (.) umgewandelt.
In Quellprogrammen, die z.B. aus dem POSIX oder UNIX ins BS2000 portiert werden, müssen die Schrägstriche nicht in Punkte umgewandelt werden.
In Quellprogrammen, die aus der BS2000-Umgebung in das POSIX-Filesystem kopiert werden, müssen die Punkte nicht in Schrägstriche umgewandelt werden. Dies gilt jedoch nur für die Standard-Include-Elemente und nicht für benutzerdefinierte Include-Dateien.
Include-Datei iso646.h
Die Include-Datei iso646.h
enthält die folgenden 11 Makros, die zu den jeweils dahinterstehenden Schreibweisen expandiert werden und damit alternative Schreibweisen für die Operatoren darstellen:
and | && | compl | ~ | or_eq | |= |
and_eq | &= | not | ! | xor | ^ |
bitand | & | not_eq | != | xor_eq | ^= |
bitor | | | or | | | |