A.3 Preprocessing directives

(6.10)

preprocessing-file:

groupopt

(6.10)

group:

group-part

group group-part

(6.10)

group-part:

if-section

control-line

text-line

# non-directive

(6.10)

if-section:

if-group elif-groupsopt else-groupopt endif-line

(6.10)

if-group:

# if constant-expression new-line groupopt

# ifdef identifier new-line groupopt

# ifndef identifier new-line groupopt

(6.10)

elif-groups:

elif-group

elif-groups elif-group

(6.10)

elif-group:

# elif constant-expression new-line groupopt

(6.10)

else-group:

# else new-line groupopt

(6.10)

endif-line:

# endif new-line

(6.10)

control-line:

# include pp-tokens new-line

# define identifier replacement-list new-line

# define identifier lparen identifier-listopt )

replacement-list new-line

# define identifier lparen ... ) replacement-list new-line

# define identifier lparen identifier-list , ... )

replacement-list new-line

# undef identifier new-line

# line pp-tokens new-line

# error pp-tokensopt new-line

# pragma pp-tokensopt new-line

# new-line

(6.10)

text-line:

pp-tokensopt new-line

(6.10)

non-directive:

pp-tokens new-line

(6.10)

lparen:

a ( character not immediately preceded by white-space

(6.10)

replacement-list:

pp-tokensopt

(6.10)

pp-tokens:

preprocessing-token

pp-tokens preprocessing-token

(6.10)

new-line:

the new-line character