Previous Table of Contents "New C Standard" commentary
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 constant-expression new-line groupopt # ifdef identifier new-line groupopt # ifndef identifier new-line groupopt
elif-groups: elif-group elif-groups elif-group
# elif constant-expression new-line groupopt
# else new-line groupopt
# endif new-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-linea
text-line: pp-tokensopt new-line
non-directive: pp-tokens new-line
(character not immediately preceded by white-space
pp-tokens: preprocessing-token pp-tokens preprocessing-token
new-line: the new-line character
1858 A new-line character ends the preprocessing directive even if it occurs within what would otherwise be an invocation of a function-like macro.
1859 140) Thus, preprocessing directives are commonly called lines.
These lines have no other syntactic
significance, as all white space is equivalent except in certain
situations during preprocessing (see the
A text line shall not begin with a
1862 A non-directive shall not begin with any of the directive names appearing in the syntax.
1863 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.
The only white-space characters that shall appear between
preprocessing tokens within a preprocessing directive (from just
after the introducing
1865 The implementation can process and skip sections of source files conditionally, include other source files, and replace macros.
1866 These capabilities are called preprocessing, because conceptually they occur before translation of the resulting translation unit.
1867 The preprocessing tokens within a preprocessing directive are not subject to macro expansion unless otherwise stated.
1868 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
Created at: 2008-01-30 02:39:44
The text from WG14/N1256 is copyright © ISO
Created at: 2008-01-30 02:39:44 The text from WG14/N1256 is copyright © ISO