Forum: Mikrocontroller und Digitale Elektronik Problem mit Makro über mehrere Zeilen


von CFritz (Gast)


Lesenswert?

Ich habe hier gerade ein wahrscheinlich ganz banales Problem...

Ich habe ein Marko definiert in C, welches folgendermaßen aussieht:
1
#define NUMBER_8 (SEG_a | SEG_b | SEG_c | SEG_d | SEG_e | SEG_f | SEG_g)

Hinter den "SEG_a" verbirgt sich wiederum ein weiteres Makro, welches 
eine Hex-Zahl beherbergt, die den Anschluss des Segments am 
Schieberegister kennzeichnet.

Meine Definition geht aber jetzt über mehrere Zeilen, da die Bezeichner 
auch mal länger sind, ist auch egal...was ich jedoch gerade machen will 
ist das hier:
1
#define NUMBER_8 (SEG_a | SEG_b | SEG_c |
2
                  SEG_d | SEG_e | SEG_f | SEG_g)

Das dient rein der Übersichtlichkeit, da der Text sonst aus der 
druckbaren Zeile läuft.

Jetzt habe ich im Internet gefunden, dass ich mit einem "\" das #define 
über mehrere Zeilen verteilen kann, also habe ich:
1
#define NUMBER_8 (SEG_a | SEG_b | SEG_c |      \
2
                  SEG_d | SEG_e | SEG_f | SEG_g)

Aber das geht nicht. Da, wo ich "NUMBER_8" benutzen will, sagt der 
Compiler "expected an expression". Wenn alles in einer Zeile steht, dann 
geht es problemlos. Was läuft jetzt schief? Geht die OR-Verknüpfung 
nicht über die Zeilen? Oder woran liegt es?

Danke

von Karl H. (kbuchegg)


Lesenswert?

CFritz schrieb:

> Aber das geht nicht.

Doch das geht.
Allerdings muss der \ das letzte Zeichen der Zeile sein!
Also kein Leerzeichen oder sonst irgendwas dahinter.

Setz deinen Cursor im Editor nach dem \ und lösche den Rest der Zeile.

von CFritz (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Allerdings muss der \ das letzte Zeichen der Zeile sein!

Nirgends ist noch etwas dahinter :-\

von Karl H. (kbuchegg)


Lesenswert?

Dann musst du deinen richtigen Code zeigen.

von CFritz (Gast)


Lesenswert?

Ohhh nein!!! Vergesst es...entschuldigt, dass ich euch mit sowas 
belästigt habe.

Ich hatte ein paar Zeilen weiter irgendwo zweimal den || drin. Das war 
der Fehler - Schande über mein Haupt!!!

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.