2012-02-16 24 views
5

vedo costruzioni come:#ifdef e chiarimenti necessari

#ifdef FOO || defined BAR 
... 
#endif 

e reclami del compilatore "Attenzione: gettoni extra alla fine del #ifdef direttiva", ovviamente dovrebbe essere:

#if defined FOO || defined BAR 
... 
#endif 

fa lo standard lo dice esplicitamente? Potresti indicare la parte rilevante?

+4

Ho sempre pensato '# ifdef' solo lavorato per singoli simboli. L'ho letto come, 'se il simbolo, è definito ...'. –

risposta

5

In C99, 6.10 direttive al preprocessore, paragrafo 1 è Sintassi:

if-group: 
# if constant-expression new-line groupopt 
# ifdef identifier new-line groupopt 
# ifndef identifier new-line groupopt 

Essa mostra la tua prima costruzione con #ifdef è corretto come solo un identificatore può seguire la #ifdef, un'espressione costante non è permesso.

Problemi correlati