Präprozessor-Direktiven Flashcards

(39 cards)

1
Q

Was ist der Präprozessor

A

Ein Teil vom Compiler.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Was macht der Präprozessor

A
  • 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, …)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Wie nennt man den Präprozessordurchlauf noch?

A

erster Durchlauf oder im englischen ‘pass 1’

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Wie erkennt man Präprozessordirektiven?

A

Das Zeichen ‘#’ steht immer am Anfang der Zeile

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Wie viele Präprozessordirektiven kann ich in eine Zeile schreiben?

A

Eine

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Was macht die #include Direktive?

A

Sie kopiert benannte (Include-)Dateien in das Programm ein.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Wie heißen die meißt die Dateien, die durch #include in das Programm eingebunden werden?

A

Headerdatein

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Welche Endungen haben Headerdatein?

A
  • *.h
  • *.hpp
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

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?

A
#include<header>
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Wie sieht die Präprozessordirektive aus mit der ich die Headerdatei header in mein Programm einbinden kann wenn header im Verzeichnis des Programms ist?

A
#include"header"
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

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?

A
#include"/home/myownheaders/header"
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

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?

A

Dann wird nach der Headerdatei im Include-Verzeichnis des Compilers gesucht.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Wie sehen die Einzelnen Schritte von einer Quelldatei bis zu einer ausführbaren Datei aus?

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Was macht die Prädirektive #define

A

Zeichenketten festelegen, die vor der Übersetzung des Programms durch andere Zeichenketten ausgetauscht werden

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Wie ist die Syntax von einer symbolischen Konstante mit #define?

A
#define Bezeichner Konstate
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Wie ist die Syntax von einem Marko mit #define

A
#define Bezeichner(Bezeichner_Liste) Ersatzbezeichner
17
Q

Wann wird ein Name in einem Programm nicht ausgetauscht obwohl der Name mit #define Name Konstaten definiert wurde?

A

Wenn Name in einem String steht.

18
Q

Kann bei

#define Bezeichner Konstante

auch einfach die Konstante weggelassen werden?

19
Q

Wann ich symbolische Kontanten die mit #define definiert sind auch in Nachfolgenden #define’s verwenden?

20
Q

Wie kann ich das ein Makro namens add schreiben das a und b als Parameter kriegt und diese beiden addiert?

A
#define add(a, b) ((a) + (b))
21
Q

Bei einem Makro, was muss sich direkt um die Variablen auf der rechten Seite befinden?

22
Q

Was macht die #ifdef (symbol), #ifdef symbol Prädirektive?

A

Sie gibt 1 zurück wenn das symbol mit #define definiert wurde, sonst 0.

23
Q

Was muss nach einer #ifdef Prädirektive für eine Direktive stehen um die bedinkte Compilierung zu beenden?

23
Q

Wie kann ich eine else if Prädirektive schreiben?

A
#elif symbol
#elif (symbol)
24
Wie kann ich eine else Prädirektive schreiben?
``` #else ```
25
Wie kann ich mehrere symbole bei der bedingten Kompilierung verknüpfen?
Wie auch bei einer normalen if/else
26
Was ist eine identische Schreibweise zu `#ifdef MAKRO`
``` #if defined MAKRO ```
27
Wie kann ich abfragen ob ein Makro nicht definiert wurde?
``` #ifndef MAKRO ```
28
Was ist eine identische Schreibweise zu `#ifndef MAKRO`
``` #if !defined MAKRO ```
29
Welches vordefinierte Makro gibt die Zeilennummer der aktuellen Zeile in der Programmdatei aus?
``` _ _LINE_ _ ```
30
Welches vordefiniert Makro gibt den Namen der Programmdatei aus?
``` _ _FILE_ _ ```
31
Welches vordefinierte Makro gibt das übersetzungsdatum der Programmdatei aus?
``` _ _TIME_ _ ```
32
Welche Makro ist vordefiniert wenn es sich bei dem Compiler um einen ANSI-C- konformen Compiler handelt?
``` _ _STDC_ _ ```
33
Welches vordefiniert Makro gibt den Namen der aktuellen Funktion aus?
``` _ _func_ _ ```
34
Wie kann ich in einem parametrisierten Makro den Namen der Variable ausgeben?
statt den Klammern ein # vor den Parameternamen setzen?
35
Mit welche Prädirektive kann ich ein `#define makroname` wieder aufheben?
``` #undef makroname ```
36
Wenn ich ein Makro definiere, was ist der Gültigkeitsbereich?
Von der Festlegung bis zum Programmende oder bis zur nächsten #undef Direktive.
37
Mit welcher Prädirektive kann ich eine Fehlermeldung ausgeben?
``` #error ```
38
Was passiert hier: ``` #error Fehlermeldung ```
Wenn `#error Fehlermeldung` Compiliert wird, wird das Programm abgebrochen und die Fehlermeldung wird ausgegeben.