#ifdef, #elif, #else und #endif

#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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren