Der Preprozessor, Teil 2

#define

#define      SYMBOLNAME       WERT

#define      FLAGNAME

#define      MAKRONAME(x)    FUNKTION (x)

Mit dem Preprozessorbefehl #define werden symbolische Konstanten, Flags und Makros definiert.

Symbolische Konstanten

Symbolische Konstanten sind genau genommen nichts anderes als ein simpler Textersatz.
Überall, wo der String SYMBOLNAME im Quelltext gefunden wird, wird dieser durch den String WERT ersetzt.

Beispiele:

         #define       PI      3.14

         #define       ERR_FEHLER1 0x01

         #define       HALLOMESS    "Hallo, Leute"

Flags

Flags werden häufig verwendet, um bedingte Kompilierung zu ermöglichen.
Das Vorhandensein eines Flags kann mit weiteren Preprozessorbefehlen abgefragt werden. Wir werden das später noch sehen.

Makros

Mit Makros können kurze, immer wiederkehrende Sequenzen auf vereinfachte Weise zusammengefasst werden.
Ist ein Makro einmal definiert, so kann er wie eine Funktion angewendet werden.
Im Gegensatz zu einer Funktion wird jedoch bei den Makros der Makroinhalt bei jedem Aufruf des Makros in das Programm eingebunden und erzeugt dadurch entsprechend grössere Programmdateien. Dafür sind Makros in aller Regel schneller als entsprechende Funktionen.

Als Beispiel sei hier ein Makro aufgezeigt, welches das Quadrat eines Wertes berechnen soll:

         #define       SQR(x)       ((x)*(x))

In diesem Fall kann das Makro für jeden Datentypen eingesetzt werden, im Gegensatz zu einer Funktion, bei welcher wir den Datentypen der Funktion und des Argumentes festlegen müssen.