Präprozessoranweisungen schachteln

#797387
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?
Gast #797657
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

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