#if

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"
    #endif

Diese 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

top