#ifdef, #elif, #else und #endif

OP #411782
Lesenswert?
• ▲
▼
Hallo an alle!

Ich und ein Freund schreiben gerade an einer universellen Lib für den
PCF8574 und den PCF8574A.

In der Header Datei soll asugewählt werden welcher der beiden ICs
verwendet wird.
1
#ifdef PCF_8574
2
  #define PCF8574_ADRESS 0b01000000  //Standardadressendes PCF8574
3
#elif PCF_8574A
4
  #define PCF8574_ADRESS 0b01110000  //Standardadresse des PCF8574A
5
#else
6
  #error "Sie haben keinen oder einen falschen IC in pcf8574.h
7
ausgewaehlt!!\n"
8
#endif

Oben definiere ich
1
#define PCF_8574

oder
1
#define PCF_8574A

Wenn ich PCF8574 definier funktioniert alles. Doch wenn ich mit dem
PCF8574A arbeiten will, Bekomme ich immer die Fehlermeldung??

Warum denn??

Ich hoffe es kann mir wer helfen.

Gruß Robert
Moderator Persönliche Seite #411787
Lesenswert?
• ▲
▼
Alternative:

#define PCF_8574 1
#define PCF_8574A 2

(Bitte nicht die 0 benutzen.)

...compiliert mit -DDEVICE=PCF_8574 (zum Beispiel), die Abfrage
dann als:

#if DEVICE == PCF_8574
...
#elif DEVICE == PCF_8574A
...
#else
#  error "DEVICE not defined."
#endif

Präprozessordirektiven haben übrigens das # immer in Spalte 1.
Seit C89 ist zusätzlich zwischen dem # und der eigentlichen
Direktive auch Leerraum zugelassen, offiziell aber nicht davor.
Gast #411789
Lesenswert?
• ▲
▼
>>> (Bitte nicht die 0 benutzen.) <<
>Warum nicht?

Vermutlich weil die 0 auch auch als logisch falsch angenommen wird. Das
wäre dann so als würde man fragen "#ifndef PCF_8574"...

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.