Bei einer Reihe von C/C++-Systemen ist der Präprozessor jedoch auch separat aufrufbar und kann mitunter auch unabhängig von der Programmiersprache als Makroprozessor genutzt werden.
#include fügt den Inhalt einer Datei ein
#define definiert eine symbolische Konstante oder ein Makro
#undef hebt eine Definition wieder auf
#ifdef }
#ifndef }
#if } Steuerung der bedingten Abarbeitung
#else }
#elif }
#endif }
#pragma systemspezifische Aktivitäten
z.B. Setzen von Compiler-Optionen
#line verändert Zeilennummerierung
#error Ausgabe von Fehlermeldungen durch den Präprozessor
Alle angegebenen Direktiven entsprechen ANSI-C.
Bei C++ wird empfohlen, für einige klassische Anwendungsbereiche von
Präprozessor-Anweisungen besser solche Sprachkonstrukte wie
const
oder inline einzusetzen.
In Bezug auf const gilt dies auch für ANSI-C.
Präprozessor-Operatoren
# Stringoperator #@ Zeichenoperator ## Symboloperator defined #if defined entspricht #ifdefNotation von Präprozessor-Anweisungen
Im Gegensatz zu C-Anweisungen gilt:
Pro Zeile darf nicht mehr als eine Präprozessor-Anweisung stehen !
ANSI-C läßt für das Notieren von Präprozessor-Anweisungen
ansonsten relativ viel Spielraum.
Beispiele:
#if SYMBOL
/* here a comment */ #if SYMBOL
#/* there a comment */ if SYMBOL
# if /* etwas
Kommentar dazwischen */ SYMBOL
Vordefinierte MakrosVordefinierte Makros werden über die Header-Dateien bereitgestellt, die zu jedem C/C++-System gehören.
Eine Redefinition dieser vordefinierte Makros sollte nur mit äußerster Vorsicht geschehen !