mikrocontroller.net

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


Autor: Bert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

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

#if SPI_ENABLE == 0

mache (auch mit Klammern um die Abfrage), beschwert sich mein AVRGCC mit 
der Meldung
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

../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?

Autor: Thomas Klima (rlyeh_drifter) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
probiers mit
#define SPI_ENABLE 0

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas Ferber (aferber)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Bert (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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....

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.