Plattformübergreifende Programmierung

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.