Der Preprozessor, Teil 2 |
|
#define SYMBOLNAME WERT
#define FLAGNAME
#define MAKRONAME(x) FUNKTION (x)
Mit dem Preprozessorbefehl #define werden symbolische Konstanten, Flags und Makros definiert.
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 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.
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.
|