Forum: Compiler & IDEs Was macht der Befehl "#ifdef 0"?


von Markus (Gast)


Lesenswert?

Hallo zusammen,

ich versuche gerade mich in vorhanden Code einzuarbeiten und bin auf 
folgenden Befehl gestossen:

#ifdef 0

Der Compiler gibt hierfür "nur" eine Warnung aus: warning: expected an 
identifier

Kann mir jemand verraten, was der Befehl bewirkt?

Danke und Gruß
Markus

von Gerd G. (gege)


Lesenswert?

MArkus,

#define ist ein Preprocessor Befehl- ändert den Text bevor compiliert 
wird - hier ein Beispiel:
1
// Only one of the clockspeeds can be defined, comment out all others
2
//#define FCY_26MHZ 1
3
#define FCY_13MHZ 1
4
5
#ifdef  FCY_13MHZ      
6
#define FCY 13000000   <--- dieser Code wird compiliert
7
#endif
8
9
#ifdef  FCY_26MHZ
10
#define FCY 26000000 <--- dieser Code wird nicht compiliert
11
#endif

Wenn der Ausdruck nach #ifdef wahr (ungleich Null) ist, wird der Code 
bis zum #endif in den Code eingefügt, sonst nicht.

Gruß

Gerd.

von VK (Gast)


Lesenswert?

Mit #ifdef prüfst du, ob ein Symbol definiert wurde und wenn ja, wird 
der folgende Code zum Compiler geschickt.

0 ist keine Symbol, deswegen wird nach einem Identifier (eine vorher 
definierte KONSTANTE) gefragt. Vermutlich wird dein Code dann trotzdem 
an den Compiler geschickt und 'normal' kompiliert.

von Markus (Gast)


Lesenswert?

Hallo,

danke für die schnellen Antworten. :-)

ich habe mich nicht ganz genau ausgedrückt. Was #ifdef prinzipiell 
macht, weiß ich. Allerdings weiß ich nicht, was passiert, wenn auf "0" 
geprüft wird.

Wird der code dann immer ausgeführt oder gar nicht?

Danke und Gruß
Markus

von Johannes M. (johnny-m)


Lesenswert?

Hmmm, zum Auskommentieren von Codeblöcken nehme ich eigentlich eher "#if 
0", das gibt auch keine Warnung...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.