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