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
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.
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.