Das letzte Beispiel für bedingte Compilierung soll die Programmierung für mehrere Plattformen (d.h. Kombination von Rechnern, Betriebssystemen, Compilern und Oberflächen) sein. So kann es z.B. von Interesse sein, wie groß die Rechengenauigkeit der Plattform ist, um z.B. abzuschätzen, ob ein numerischer Algorithmus noch konvergieren wird oder nicht.
Dazu kann man bedingte Compilierung wie folgt nutzen:
#define __DEFAULT__ #ifdef __PF1__ #undef __DEFAULT__ #define EPSILON 0.0000000765 #endif #ifdef __PF2__ #undef __DEFAULT__ #define EPSILON 0.00000000086 #endif #ifdef __DEFAULT__ #define EPSILON 0.00005 #endif
Hierbei wird ein Wert EPSILON
abhängig von der
Plattform gesetzt. Dieser könnte z.B. gebraucht werden, um die
numerische Fehlergenauigkeit eines Systems festzustellen. Im Falle,
daß die Plattform bekannt ist, übergibt man entsprechend
_PF1_
bzw. _PF2_
und der Wert wird
entsprechend gesetz und DEFAULT
wird zurückgenommen.
Falls DEFAULT
nicht zurückgenommen wurde, ist die
Plattform nicht bekannt und es wird ein Standardwert gesetzt.
Dabei sollte man allerdings aufpassen, daß man den Code gut strukturiert. Denn wenn man ein Programm schreibt, das von Rechner, Betriebssystem, Filesystem, Netzwerk und graphischer Oberfläche abhängt und dabei im Schnitt 5 Alternativen kennt, kann solch ein Code sehr schnell völlig unübersichtlich werden, eine spätere Änderung ist dann schwierig bis nahezu unmöglich - Fehler sind vorprogrammiert.