This issue has been automatically converted from the original issue lists and some formatting may not have been preserved.
Authors: Derek M. Jones, WG14
Date: 1992-12-10
Reference document: X3J11/90-056
Submitted against: C90
Status: Fixed
Fixed in: C90 TC1
Cross-references: 0040.04, 0146
Converted from: dr.htm, dr_017.html
Header name tokenization
There is an inconsistency between subclause 6.1.7, page 33, line 8 and the description of the creation of header name preprocessing tokens.
The “shall” on page 32, line 33 does not limit the creation of header name
preprocessing tokens to within #include
directives. It simply states that they
would cause a constraint error in this context.
Subclause 6.1.7, page 33, line 8 should read {0x3
}{<1/a.h>
}{1e2
}, or extra
text needs to be added to subclause 6.1.7.
I have not met anybody who expects if (a<b || c>d)
to parse as {if
} {(
}
{a
} {<b || c>
} {d
} {)
}.
Comment from WG14 on 1997-09-23:
Add to subclause 6.1, page 18 (Semantics):
A header name preprocessing token is only recognized within a #include
preprocessing directive, and within such a directive, a sequence of characters
that could be either a header name or a string literal is recognized as the
former.
Add to subclause 6.1.2, page 20 (Semantics):
When preprocessing tokens are converted to tokens during translation phase 7, if a preprocessing token could be converted to either a keyword or an identifier, it is converted to a keyword.
In subclause 6.1.7, page 32, lines 32-34, delete:
Constraint
Header name preprocessing tokens shall only appear within a #include
preprocessing directive.
Add to subclause 6.1.7, page 32 (Semantics):
A header name preprocessing token is recognized only within a #include
preprocessing directive.