C-Programmierung

Präprozessor-Macros

Präprozessor Direktiven | | Bedingte Kompilation

Bei Präprozessor-Macros kann die textuelle Ersetzung parametrisiert werden. Das heisst, das ein Präprozessor-Macro eine Liste von Parametern besitzt, deren jeweiliger Wert in der rechts-seitigen Macro-Definition eingesetzt wird.

Ein einfaches Beispiel anhand des Absolutbetrages:

#define ABS(x) (x>0)?x:-x

Der Präprozessor ersetzt dann

ABS(3)

durch

(3>0)?3:-3

Achtung: Macros sind keine Funktionen! Es erfolgt eine textuelle Ersetzung durch den Präprozessor, d.h. es findet insbesondere keine implizite Zuweisung der Parameter sondern nur eine textuelle Substitution statt!

Der Präprozessor ersetzt zum Beispiel

4*ABS(3)

durch

4*(3>0)?3:-3 /* evaluates to 3 */

oder

ABS(3-4)

durch

(3-4>0)?3-4:-3-4 /* evaluates to -7 */

Der Gesamtausdruck und die Parameter mĂĽssen daher explizit geklammert werden.

#define ABS(x) ((x)>0)?(x):-(x))


Präprozessor Direktiven | | Bedingte Kompilation

Options: