Forum: Mikrocontroller und Digitale Elektronik Atmel GCC Frage zu #ifdef


von Jürgen (Gast)


Lesenswert?

hallo,
ich habe während der Entwicklung meines Programms einige LEDs zum 
debuggen genutzt. Nun bin ich fertig und müsste all diese Zeilen 
auskommentieren oder löschen.
ich dachte ich könnte mit
.
.
#ifdef DEBUG LED_PORT ^= 1<<LED3; #endif
.
.

es ein und auschaltbar machen.

leider wirft mir der Compiler das hier raus:
../tiny13.c:385: error: 'ifdef' undeclared (first use in this function)
../tiny13.c:385: error: (Each undeclared identifier is reported only 
once
../tiny13.c:385: error: for each function it appears in.)
../tiny13.c:385: error: expected ';' before 'DEBUG'
../tiny13.c:390: error: stray '#' in program
.
.
.immer so weiter bei allen stellen meldet er Fehler


Ich habe das schon desöftern im größeren Stil genutzt um beispielsweise 
eine ADC Prozedur auszuschalten.

Kann ich das nicht immer einfach auch mitten im Program machen?
Gibt es eine andere Möglichkeit die Zeilen bei Bedarf einfach wieder zu 
entkommentieren?

von greg (Gast)


Lesenswert?

Präprozessor-Anweisungen müssen alleine in einer Zeile stehen, da kannst 
du keinen Code reinmischen.

von g457 (Gast)


Lesenswert?

1
#ifdef DEBUG
2
    LED_PORT ^= 1<<LED3;
3
#endif // DEBUG

..oder sowas zentral..
1
#ifdef DEBUG
2
    #define DEBUG_LED_TOGGLE() LED_PORT ^= 1<<LED3
3
#else // DEBUG
4
    #define DEBUG_LED_TOGGLE() (void)0
5
#endif // DEBUG

HTH

von Dr. Sommer (Gast)


Lesenswert?

Jürgen schrieb:
> #ifdef DEBUG LED_PORT ^= 1<<LED3; #endif
Zeilenumbrüche fehlen
1
#ifdef DEBUG
2
LED_PORT ^= 1<<LED3;
3
#endif
Alternativ:
1
inline void toggleDebugLED () {
2
#ifdef DEBUG
3
  LED_PORT ^= 1 << LED3;
4
#endif
5
}
6
int main () {
7
  // ...
8
  toggleDebugLED ();
9
  // ...
10
}

von Dr. Sommer (Gast)


Lesenswert?

PS: Es heißt nicht "Atmel GCC", denn der GCC ist nicht von Atmel... Wenn 
schon AVR-GCC.

von Jürgen (Gast)


Lesenswert?

tausend Dank

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.