Präprozessor-Direktiven Flashcards
(39 cards)
Was ist der Präprozessor
Ein Teil vom Compiler.
Was macht der Präprozessor
- Stringliterale werden zusammengefasst
- Zeilennumbrücke mit einem Backslash am Anfang werden entfernt
- Kommentare werden entfernt und durch Leerzeichen ersetzt
- Whitespace-Zeichen zwischen Tokens werden gelöscht
- Header- & Quelldateien werden in den Quelltext kopiert (#include)
- symbolische Konstanten werden eingebunden (#define)
- bedingte Kompilierung(#ifdef, #elseif, …)
Wie nennt man den Präprozessordurchlauf noch?
erster Durchlauf oder im englischen ‘pass 1’
Wie erkennt man Präprozessordirektiven?
Das Zeichen ‘#’ steht immer am Anfang der Zeile
Wie viele Präprozessordirektiven kann ich in eine Zeile schreiben?
Eine
Was macht die #include Direktive?
Sie kopiert benannte (Include-)Dateien in das Programm ein.
Wie heißen die meißt die Dateien, die durch #include in das Programm eingebunden werden?
Headerdatein
Welche Endungen haben Headerdatein?
- *.h
- *.hpp
Wie sieht die Präprozessordirektive aus mit der ich die Headerdatei header
in mein Programm einbinden kann wenn header
im Include-Verzeichniss des Compilers ist?
#include<header>
Wie sieht die Präprozessordirektive aus mit der ich die Headerdatei header
in mein Programm einbinden kann wenn header
im Verzeichnis des Programms ist?
#include"header"
Wie sieht die Präprozessordirektive aus mit der ich die headerdatei header
in mein Programm einbinden kann wenn header
im Verzeichnis /home/myownheaders/header
steht?
#include"/home/myownheaders/header"
Wenn wir mit #include"header"
die Datei header
einbinden wollen, sie aber nicht im aktuellen Arbeitsverzeichnis ist oder bei Absoluten Pfaden nicht da ist, was passiert dann?
Dann wird nach der Headerdatei im Include-Verzeichnis des Compilers gesucht.
Wie sehen die Einzelnen Schritte von einer Quelldatei bis zu einer ausführbaren Datei aus?
Was macht die Prädirektive #define
Zeichenketten festelegen, die vor der Übersetzung des Programms durch andere Zeichenketten ausgetauscht werden
Wie ist die Syntax von einer symbolischen Konstante mit #define
?
#define Bezeichner Konstate
Wie ist die Syntax von einem Marko mit #define
#define Bezeichner(Bezeichner_Liste) Ersatzbezeichner
Wann wird ein Name in einem Programm nicht ausgetauscht obwohl der Name mit #define Name Konstaten
definiert wurde?
Wenn Name in einem String steht.
Kann bei
#define Bezeichner Konstante
auch einfach die Konstante weggelassen werden?
Ja
Wann ich symbolische Kontanten die mit #define
definiert sind auch in Nachfolgenden #define
’s verwenden?
Ja
Wie kann ich das ein Makro namens add schreiben das a und b als Parameter kriegt und diese beiden addiert?
#define add(a, b) ((a) + (b))
Bei einem Makro, was muss sich direkt um die Variablen auf der rechten Seite befinden?
Klammern
Was macht die #ifdef (symbol)
, #ifdef symbol
Prädirektive?
Sie gibt 1 zurück wenn das symbol mit #define
definiert wurde, sonst 0.
Was muss nach einer #ifdef
Prädirektive für eine Direktive stehen um die bedinkte Compilierung zu beenden?
#endif
Wie kann ich eine else if Prädirektive schreiben?
#elif symbol #elif (symbol)