next up previous contents index
Nächste Seite: 11.2 Zeitmessung im Programm Aufwärts: 11. Tips und Tricks Vorherige Seite: 11. Tips und Tricks   Inhalt   Index


11.1 Präprozessorbefehle

Wir kennen bereits die Präprozessoranweisung

#include <math.h>

welche vor dem eigentlichen Compilieren den Inhalt des Files math.h an der entsprechenden Stelle im Quellfile einfügt. Analog können bestimmte Teile des Quelltextes beim Compilieren eingebunden oder ignoriert werden, je nach Abhängigkeit des Tests (analog einer Alternative wie in §4.3) welcher mit einer Präprozessorvariablen durchgeführt wird. (siehe preproc.cc)

Variablen des Präprozessors werden mittels

#define MY_DEBUG

definiert und wir können auch testen, ob sie definiert sind:

#ifdef MY_DEBUG
cout << "Im Debug-Modus" << endl;
#endif

Analog kann mit

#ifndef MY_DEBUG
#define MY_DEBUG
#endif

zunächst getestet werden, ob die Variable MY_DEBUG bereits definiert wurde. Falls nicht, dann wird sie eben jetzt definiert. Diese Technik wird häufig benutzt um zu verhindern, daß die Deklarationen eines Headerfiles mehrfach in denselben Quelltext eingebunden werden. (siehe studenten4.hh)

//      studenten4.hh
#ifndef FILE_STUDENTEN
#define FILE_STUDENTEN
//      Deklarationen des Headefiles
...
#endif

Einer Präprozessorvariablen kann auch ein Wert zugewiesen werden

#define SEE_PI 5

welcher anschließend in Präprozessortests (oder im Programm als Konstante) benutzt werden kann:

#if (SEE_PI==5)
cout << " PI = " << M_PI << endl;
#else
// leer oder Anweisungen
#endif

Eine häufige Anwendung besteht in der Zuweisung eines Wertes zu einer Präprozessorvariablen, falls diese noch nicht definiert wurde

#ifndef M_PI
#define M_PI 3.14159
#endif

Desweiteren können Makros mit Parametern definiert

#define MAX(x,y) (x>y ? x : y)

und im Quelltext verwendet werden.

cout << MAX(1.456 , a) << endl;

Mehr über Präprozessorbefehle ist u.a. in [God98] und [Str00, $A.11] zu finden.


next up previous contents index
Nächste Seite: 11.2 Zeitmessung im Programm Aufwärts: 11. Tips und Tricks Vorherige Seite: 11. Tips und Tricks   Inhalt   Index
Gundolf Haase 2004-01-15