Forum: Compiler & IDEs ifndef besser verschachteln


von Tilo (Gast)


Lesenswert?

Hallo

Ich habe eine Header-File für eine MCU Familie geschrieben. Leider 
liegen bei einigen Modellen die MMRs unterschiedlich. Ich habe das ganze 
so gelöst, dass man mit einem Compilersymbol den aktiven Controller 
auswählen kann. Ist kein Controller per Symbol aktiviert, soll eine 
Fehlermeldung angezeigt werden. Im Moment mache ich das so:

[...]
#ifndef ADUC7033
#ifndef ADUC7034
#ifndef ADUC7128
#ifndef ADUC7129
#error Please define MCU type with -DADUC7xxx, where xxx represents the 
exact model type.
#endif
#endif
#endif
#endif
[...]

Das ganze sieht nicht sonderlich schön aus. Kann man das besser machen? 
Ich habe leider nichts gefunden.
#ifdef (!ADUC7033 && !ADUC7034 ......
funktioniert leider nicht.

von Stefan E. (sternst)


Lesenswert?

#if ! defined(ADUC7033) && ! defined(ADUC7034) ...

von Tilo (Gast)


Lesenswert?

Danke, so gehts.
1
* Check MCU type is set */
2
#if ! defined(ADUC7019) && ! defined(ADUC7020) && ! defined(ADUC7021) && ! defined(ADUC7022) && \
3
  ! defined(ADUC7023) && ! defined(ADUC7024) && ! defined(ADUC7025) && ! defined(ADUC7026) && \
4
  ! defined(ADUC7027) && ! defined(ADUC7028) && ! defined(ADUC7032) && ! defined(ADUC7033) && \
5
  ! defined(ADUC7034) && ! defined(ADUC7128) && ! defined(ADUC7129)
6
7
  #error Please define MCU type with -DADUC7xxx, where xxx represents the exact model type.
8
#endif

Bin da hängen geblieben, weil man am Zeilenende ein Backslash setzen 
muss, da anscheinend Compiler-Anweisungen am Zeilenende aufhören.

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.