Bedingte Kompilierung nennt es sich, wenn man mittels Präprozessor Code-Teile aktiviert und deaktiviert.
#if defined(WIN32) || defined(__WIN32__)
void sleep(int i) { Sleep(i); }
#elif defined(linux) || defined(__linux__)
void sleep(int i) { nanosleep(i); }
#else
#error "Unsupported Operating System"
#endifDiese Code ruft unter Windows Sleep() und unter Linux nanosleep() auf. Auf diese Art lässt sich plattformunabhängiger Code erstellen.
defined(X) liefert true wenn X mittels #define definiert wurde. Eine Kurzschreibweise für #if defined(X) ist #ifdef X bzw. #ifndef X für #if !defined(X)
Man sollte jede Header Datei mit Includeguards sichern um Probleme zu vermeiden wenn sie mehrmals includiert wird. Nehmen wir an, wir includieren 'iostream' und 'foo.hpp', aber 'foo.hpp' includiert auch 'iostream' - dann wäre 'iostream ja zweimal includiert.
#ifndef diese_datei_included
#define diese_datei_included
// Hier der Code
#endif