Preprozessor
Der Preprozessor (oder Präprozessor) hat die Aufgabe, sich vor der eigentlichen Kompilation durch die zu kompilierenden Dateien durchzuarbeiten und sogenannte Direktiven umzusetzen. Diese Direktiven dienen hauptsächlich dazu, externe Dateien einzubinden, Makros zu definieren, sowie bedingte Compilierung und Fehlermeldungen zu steuern.
Die wichtigsten Direktiven
#include |
Einbinden von Dateien |
#define |
Definition eines Makros |
#undef |
Definitionen verwerfen |
#error |
Compiler-Fehler ausgeben |
#warning |
Compiler-Warnung ausgeben |
Bedingte Compilierung
#if |
Bedingte Compilierung |
#else |
Else-Teil der bedingten Compilierung |
#elif |
Folge-Bedingung der bedingten Compilierung |
#endif |
Abschluss einer bedingten Compilierung |
#ifdef |
Bedingte Compilierung bei existierendem Makro |
#ifndef |
Bedingte Compilierung Bei fehlendem Makro |
defined |
Prüft auf Existenz eines Makros |
Weitere Preprozessor-Angaben
Compilermakros |
Vordefinierte Makros |
Single #include |
Einmaliges Einbinden von Dateien |
Stringifizierung # |
Argument als String in doppelten Anführungszeichen " " |
Buchstabisierung #@ |
Argument als Character in einfachen Anführungszeichen ' ' |
Konkatenation ## |
Konkatenation |
\ am Ende der Zeile |
Zusammenfügen mehrerer Zeilen |
Makro-Parameter ... |
Variadische Makros |
Seltene Direktiven
Folgende Direktiven sind der Vollständigkeit halber aufgeführt, für die normale Programmierung werden sie jedoch nicht benötigt. Da sie teils veraltet und häufig nicht standartisiert sind, wird ausserdem vom Gebrauch ABGERATEN, es sei denn, man weiss, was man tut.
#line |
Zeilennummern-Kontrolle |
#import |
Einmalige Einbindung von Dateien |
Null-Direktive # |
Null-Direktive |
#include_next |
Einbinden von Dateien nicht aus dem ersten Verzeichnis |
#assert |
Definieren von Prädikaten |
#unassert |
Invalidierung von Prädikaten |
#pragma |
Compiler-Kontrolle |
#ident |
Identifikations-Direktive |
#sccs |
BSD-spezifische Direktive |