Jede Bibliotheksfunktion ist in einer Include-Datei deklariert. Viele Bibliotheksfunktionen benutzen symbolische Konstanten und Datentypen, die in Include-Dateien definiert sind. Die als Makros realisierten Bibliotheksfunktionen stehen ebenfalls in Include-Dateien.
Die für die Verwendung von Bibliotheksfunktionen notwendigen Include-Dateien sind Bestandteile der CRTE-Bibliothek SYSLIB.CRTE. Sie sind dort als Quellprogrammelemente (Typ S) abgespeichert und werden bei der Übersetzung auf Grund der Präprozessoranweisung #include
in das Programm kopiert. Wie dies geschieht, ist ausführlich in den Com-piler-Benutzerhandbüchern dargestellt.
Folgende Include-Dateien stehen zur Verfügung:
<ascii_ebcdic.h> | <assert.h> | <bs2cmd.h> | <cglobals.h> | <cont.h> |
<crduc.h> | <ctype.h> | <errno.h> | <float.h> | <ieee_390.h> |
<ilcs.h> | <inttypes.h> | <iso646.h> | <limits.h> | <locale.h> |
<math.h> | <setjmp.h> | <signal.h> | <stdarg.h> | <stddef.h> |
<stdio.h> | <stdlib.h> | <string.h> | <strings.h> | <stxit.h> |
<sys.timeb.h> | <sys.types.h> | <time.h> | <timeb.h> | <wchar.h> |
<wctype.h> |
Die Include-Dateien enthalten u.a. Folgendes:
Definitionen von symbolischen Konstanten mit den für die ordnungsgemäße Funktionsausführung notwendigen Werten, z.B.:
BUFSIZ
Betriebssystemspezifische Standardgröße des Ein-/Ausgabepuffers (8192
Bytes).EOF
Dateiende-Kriterium (-1)
WEOF
Dateiende-Kriterium für Langzeichen-Dateien (L“-1“)
_NFILE
Maximal erlaubte Anzahl der gleichzeitig geöffneten Dateien einschließlich
der Standarddateienstdin
,stdout
undstderr
(2048).NULL
NULL-Zeiger (0)
Definitionen von Datentypen und Strukturen, die von den Funktionen benutzt werden, z.B.:
FILE
Die meisten Ein-/Ausgabefunktionen benutzen einen Zeiger auf eine Struktur
vom Typ FILE (siehe auch Abschnitt "FILE-Struktur“ (Grundbegriffe))mbstate_t
Dieser Datentyp wird von den Multibyte-Funktionen benutzt und entspricht
in dieser Implementierung dem Typchar
.size_t
Dieser Datentyp wird von vielen Zeichenkettenfunktionen benutzt und
entspricht in dieser Implementierung dem Typunsigned
.ptrdiff_t
Dieser Datentyp wird für das Ergebnis einer Subtraktion von Zeigern
verwendet und entspricht in dieser Implementierung dem Typinteger
.wint_t
Dieser Datentyp enthält Werte, die den Elementen des erweiterten Charac-
ter-Sets entsprechen oder den Wert WEOF (Ende der Eingabe). In dieser
Implementierung entspricht dieser Datentyp dem Typinteger
.wchar_t
Dieser Datentyp wird von den Multibyte-Funktionen benutzt und entspricht
in dieser Implementierung dem Typlong
.wctrans_t
Skalarer Datentyp, der Lokalitäten-spezifische Zeichenabbildungen
repräsentiert.wctype_t
Skalarer Datentyp, der Lokalitäten-spezifische Zeichenklassen repräsentiert.
In dieser Implementierung entspricht dieser Datentyp dem Typlong
.clock_t
Dieser Datentyp wird von der Funktion clock benutzt und entspricht in dieser
Implementierung dem Typinteger
.time_t
Dieser Datentyp wird von vielen Zeitfunktionen benutzt und entspricht in dieser
Implementierung dem Typlong
.va_list
Dieser Datentyp wird von den Funktionen benutzt, die variable Argumentenlisten
bearbeiten (z.B.vprintf
).Die Prototyp-Deklaration aller Funktionen
Vor Aufruf einer Funktion muss der Datentyp bekannt, d.h. deklariert sein. Dies ist mit dem Einfügen der entsprechenden Include-Datei gewährleistet. In den Übersetzungsmodi „ANSI“ und „STRICT-ANSI“ erhält man eine Warnung, wenn die Deklaration fehlt. Im Übersetzungsmodus „CPLUSPLUS“ erhält man bei einer fehlenden Deklaration einen Fehler und es wird kein Modul erzeugt.
Siehe auch Abschnitt "Präprozessor-Define _STRICT_STDC“.
Die Definition aller Makros
Einige Bibliotheksfunktionen sind als Makros realisiert. Um ein Makro benutzen zu können, muss die jeweilige Include-Datei in das Programm eingefügt werden.
Für den Aufruf von C-Bibliotheksfunktionen aus C++-Quellen enthalten die Include-Dateien für alle Funktionen und Daten extern "C"-Deklarationen.
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 | | | |