Forum: Mikrocontroller und Digitale Elektronik Brauche Hilfe bei defines


von Kai (Gast)


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

von Johannes M. (johnny-m)


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

von Thorsten Pusch (Gast)


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

von Johannes M. (johnny-m)


Lesenswert?

@Thorsten:
Ich bin mir ziemlich sicher, dass er auch nicht
1
LED = LED_on;
schreiben will, sondern so, wie ich es oben schon geschrieben habe...

von Kai (Gast)


Lesenswert?

Hi, Danke für die Antworten!

Ne ne, LED = LED=0x05; macht ja nicht wirklich Sinn;-)

Johannes hat das schon richtig erkannt.

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.