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