Forum: Mikrocontroller und Digitale Elektronik Präprozessoranweisungen schachteln


von Matthias H. (mathes)


Lesenswert?

Hi Leute

Habe kürzlich mehr durch Zufall zwei Präprozessoranweisungen wie folgt 
geschachtelt:

#define a
#define b

#ifdef a
.
.
.
   #ifdef b
   .
   #else
   .
   #endif
.
.
.
#endif

Das Ergebnis war allerdings nicht das gewünschte. Alles nach dem ersten 
#endif wurde grundsätzlich in den übernommen, egal ob a definiert war 
oder nicht.
Dazu folgende Frage:
Kann man Präprozessoranweisungen grundsätzlich nicht schachteln (habe 
dazu nix in der Literatur gefunden), oder geht das nur mit dem IAR 
nicht?

von Jörg X. (Gast)


Lesenswert?

In der GCC-Doku steht
>"[...]#endif always matches the nearest #ifdef (or #ifndef, or #if)[...]"
d.h. das kann man schachteln.
Beachte aber, das das '#' immer in der ersten Spalte stehen muss:
1
#if A
2
    #if B //geht nicht, wird nicht als Präprozessoranweisung erkannt!
3
    #endif
4
5
#    if B // geht und ist übersichtlich
6
#    endif
7
#endif

hth. Jörg

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.