preprocessing-file: groupopt group: group-part group group-part
group-part: if-section control-line text-line
# non-directive if-section: if-group elif-groupsopt else-groupopt endif-line if-group:
# if constant-expression new-line groupopt # ifdef identifier new-line groupopt # ifndef identifier new-line groupopt elif-groups: elif-group elif-groups elif-group
elif-group:
# elif constant-expression new-line groupopt else-group:
# else new-line groupopt endif-line:
# endif new-line 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 atext-line: pp-tokensopt new-line
non-directive: pp-tokens new-line
lparen:
( character not immediately preceded by white-space
replacement-list: pp-tokensopt pp-tokens: preprocessing-token pp-tokens preprocessing-token
new-line: the new-line character
1839
A
1840 A new-line character ends the preprocessing directive even if it occurs within what would otherwise be an invocation of a function-like macro.
1841 140) Thus, preprocessing directives are commonly called lines.
1842
These lines have no other syntactic
significance, as all white space is equivalent except in certain
situations during preprocessing (see the
1843
A text line shall not begin with a
1844 A non-directive shall not begin with any of the directive names appearing in the syntax.
1845 When in a group that is skipped (6.10.1), the directive syntax is relaxed to allow any sequence of preprocessing tokens to occur between the directive name and the following new-line character.
1846
The only white-space characters that shall appear between
preprocessing tokens within a preprocessing directive (from just
after the introducing
1847 The implementation can process and skip sections of source files conditionally, include other source files, and replace macros.
1848 These capabilities are called preprocessing, because conceptually they occur before translation of the resulting translation unit.
1849 The preprocessing tokens within a preprocessing directive are not subject to macro expansion unless otherwise stated.
1850 EXAMPLE In:
#define EMPTY
EMPTY # include
the sequence of preprocessing tokens on the second line is not
a preprocessing directive, because it does not begin with a
Next
Created at: 2005-06-29 02:19:04
The text from WG14/N1124 is copyright © ISO