Brauche Hilfe bei defines

Gast #754244
Lesenswert?
• ▲
▼
Hallo,

ich definiere mir gerade ein paar Sachen mit #defines:

#ifndef DEFINES_H
#define DEFINES_H

#define LED_on  0x05;
#define LED_off 0x00;

#endif


und weise einer Variablen dann die Bedingung zu


if(counter == 100)
LED = LED_on;



Ist es auch möglich das so zu schreiben:

#ifndef DEFINES_H
#define DEFINES_H

#define LED_on  LED=0x05;
#define LED_off LED=0x00;

#endif
#754253
Lesenswert?
• ▲
▼
Klar ist das im Prinzip möglich. #define macht nur eine Textersetzung. 
Und wenn der Text, der für das Makro eingefügt wird, syntaktisch in 
Ordnung ist, dann ist das kein Problem.

In Deinem Fall solltest Du aber in der Makrodefinition jeweils das 
Semikolon am Ende weglassen. Sonst gibt es nämlich Ärger, wenn Du dann 
schreibst
1
#define LED_on  LED=0x05;
2
//...
3
LED_on;
Der Präprozessor macht daraus
1
LED=0x05;;
...und da ist dann ein Semikolon zu viel ...

Also besser
1
#define LED_on  LED=0x05
Gast #754257
Lesenswert?
• ▲
▼
Ein #define ist eine Präprozessoranweisung. Der Präprozessor ersetzt 
einfach Texte durch andere Texte.
Wenn du schreibst:

#define LED_on  LED=0x05;
...
LED = LED_on;


ersetzt der Präprozessor das in:

LED = LED=0x05;

ich glaube nicht, dass du das damit bezwecken willst. Deshalb würde ich 
sagen:

Nein, das kann man nicht so schreiben.

Thorsten

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren