2012-02-16 26 views
5

veo construcciones como:#ifdef y aclaraciones necesarias

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

y quejas del compilador "Advertencia: elementos extra al final de la directiva #ifdef", es obvio que debe ser:

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

¿El el estándar dice explícitamente eso? ¿Podría señalar la parte relevante?

+4

Siempre pensé que '# ifdef' solo funcionaba para símbolos individuales. Lo leí como, 'si el símbolo, se define ...'. –

Respuesta

5

En C99, 6,10 directivas de preprocesamiento, párrafo 1 es Sintaxis:

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

Muestra su primera construcción con #ifdef es incorrecta, ya que sólo un identificador puede seguir la #ifdef, no se permite una expresión constante.

Cuestiones relacionadas