Präprozessor-Direktiven
Die meisten Programme fangen mit einer Präprozessor-Direktive an. Direktiven fangen immer mit einer Raute # an und werden vor dem Compilieren verarbeitet. Mit dem Präprozessor kann man einige Interessante Dinge machen!
- #include <iostream>
- #include "myHeaderFile.h"
Format mit Anführungszeichen. Der Präprozessor sucht in dieser Reihenfolge nach Includedateien:
- In dem Verzeichnis, in dem auch die Datei mit der #include-Anweisung enthalten ist.
- In den Verzeichnissen der aktuell geöffneten Includedateien in umgekehrter Reihenfolge, in der sie geöffnet wurden. Die Suche beginnt im Verzeichnis der übergeordneten Includedatei und wird nach oben durch die Verzeichnisse aller Includedateien der zweiten übergeordneten Ebene fortgesetzt.
- Entlang des Pfads, der durch die einzelnen /I-Compileroptionen angegeben wurde.
- Entlang der Pfade, die durch die INCLUDE-Umgebungsvariable angegeben wurden.
Format mit spitzer Klammer. Der Präprozessor sucht in dieser Reihenfolge nach Includedateien:
- Entlang des Pfads, der durch die einzelnen /I-Compileroptionen angegeben wurde.
- Beim Kompilieren von der Befehlszeile entlang der Pfade, die durch die INCLUDE-Umgebungsvariable angegeben werden.
- #ifndef HEADERDATEI_H
- #define HEADERDATEI_H
- .......
- .....
- #endif
#ifndef HEADERDATEI_H (if not defined)
Prüft ob die Symbolische Konstante HEADERDATEI_H nicht gesetzt ist. Wenn nicht, wird der Code bis #endif abgearbeitet.
#define HEADERDATEI_H definiert eine Symbolische Konstante mit dem Namen HEADERDATEI_H
- #define MUL(p1, p2) p1*p2+10
- #define DEBUGING 1
- #if DEBUGING==1
- // Debugmode oder sowas ..
- #else
- // Normaler Start ...
- #endif
#define DEBUGING 1 deklariert die Symbolische Konstante DEBUGING und weist (definiert) ihr den Wert 1 zu
#if DEBUGING==1 prüft ob in der Symbolische Konstante DEBUGING der Wert 1 gespeichert ist
- #ifdev DEBUGING
- // Die Symbolische Konstante ist definiert
- #endif
#ifdev DEBUGING (if defined) prüft ob die Symbolische Konstante DEBUGING definiert worden ist.
Wenn ja wird der Code bis #endif ausgeführt
- #undef DEBUGING
#undef DEBUGING löscht die Symbolische Konstante DEBUGING wieder
Datei:
Quelldateien/main.cpp- #include <iostream> // std::cin
-
- #define MAKROFUNKTION(condition) \
- if(condition) { \
- printf("Bedingung ist wahr!"); \
- }
-
- int main(void)
- {
- MAKROFUNKTION(true);
-
- std::cin.get();
- return 0;
- }
#define MAKROFUNKTION(.... ist das gleiche wie #define MUL... mit dem Unterschied das durch das \ Zeichen am Ende eine neue Zeile begonnen wird.