mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Brauche Hilfe bei defines


Autor: Kai (Gast)
Datum:

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

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht 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
#define LED_on  LED=0x05;
//...
LED_on;
Der Präprozessor macht daraus
LED=0x05;;
...und da ist dann ein Semikolon zu viel ...

Also besser
#define LED_on  LED=0x05

Autor: Thorsten Pusch (Gast)
Datum:

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

Autor: Johannes M. (johnny-m)
Datum:

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

Autor: Kai (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi, Danke für die Antworten!

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

Johannes hat das schon richtig erkannt.

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.