Previous Table of Contents "New C Standard" commentary
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
1855
A
1856
1857
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.
1860
These lines have no other syntactic
significance, as all white space is equivalent except in certain
situations during preprocessing (see the
1861
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.
1864
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
Next
Created at: 2008-01-30 02:39:44
The text from WG14/N1256 is copyright © ISO