Forum: Compiler & IDEs AVRGCC: #if mag == nicht


von Bert (Gast)


Lesenswert?

Hallo!

Ich versuche, mit #if-Anweisungen mein Programm flexibler zu gestaltetn. 
Dabei habe ich aber ein Problem. Wenn ich
1
#define SPI_ENABLE = 0
2
3
#if SPI_ENABLE == 0

mache (auch mit Klammern um die Abfrage), beschwert sich mein AVRGCC mit 
der Meldung
1
avr-gcc  -mmcu=atmega32 -Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT LED_MATRIX_v2.o -MF dep/LED_MATRIX_v2.o.d  -c  ../LED_MATRIX_v2.c
2
3
../matrix.h:11:5: error: token "=" is not valid in preprocessor expressions

Ich habe bei meiner Suche schon den Hinweis gefunden, das der 
Präprozessor hier nur numerische Abfragen mag, aber selbst die tun hier 
ja offenbar nicht. Was mache ich falsch? Oder geht ein Vergleich mit == 
einfach nicht?

von Thomas K. (rlyeh_drifter) Benutzerseite


Lesenswert?

probiers mit
1
#define SPI_ENABLE 0

von Karl H. (kbuchegg)


Lesenswert?

Bert schrieb:

Das hier

> #define SPI_ENABLE = 0

definiert, dass in weiterer Folge der Text "SPI_ENABLE" durch den Text 
"= 0" zu ersetzen ist. Nich ganz das was du möchtest

von Andreas F. (aferber)


Lesenswert?

Bert schrieb:
> #define SPI_ENABLE = 0
>
> #if SPI_ENABLE == 0

Nunja, "= 0 == 0" ist nunmal keine korrekte Expression. Lies in deinem 
C-Buch nochmal die Syntax von #define nach, oder schau dir alternativ 
mal Beispiele für #define in anderer Leute Code an.

Andreas

von Bert (Gast)


Lesenswert?

Danke für das Entfernen der Massivholz-Arbeitsplatte vor meinem Kopf! 
Normal weiß ich wie #define funktioniert, aber hab wohl zu lange kein C 
mehr geschrieben (mach momentan nur Java), und es ist schon spät ;)

Nachmal vielen Dank, ich geh mich jetzt etwas schämen....

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.