This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 120a. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.
2026-06-25
Consider:
#define SUFFIX #include "foo.h"SUFFIX
The "foo.h" should be lexed as a header-name, not as a user-defined-string-literal.
Suggested resolution:
Change in 5.5 [lex.pptoken] bullet 5.4.1 as follows:
- ...
- Otherwise, the next preprocessing token is the longest sequence of characters that could constitute a preprocessing token, even if that would cause further lexical analysis to fail, except that
- a string-literal or user-defined-string-literal token is never formed when a header-name token can be formed, and
- a header-name (5.6 [lex.header]) is only formed ...