Programmiersprache C/C++

Präprozessor

Der Übersetzung eines C/C++-Quelltexts geht stets eine Vorverarbeitung voran. Diese Vorverarbeitung übernimmt der Präprozessor.
In der Regel wird der Präprozessor automatisch aufgerufen, seine Aktivitäten werden im allgemeinen nur indirekt sichtbar.

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.

Der Präprozessor erlaubt Der C/C++-Präprozessor verarbeitet folgende Direktiven:
  #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.
Die erste Gruppe von Direktiven sollten in jedem C/C++-System zur Verfügung stehen, die restlichen Direktiven sind gegebenenfalls system- bzw. versionsabhängig.

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   #ifdef
Notation 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 Makros

Vordefinierte 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 !


Zurück zum Menü
Zurück zur vorigen Seite Weiter zur nächsten Seite

P. Böhme, 20.02.1996