This commit is contained in:
2025-10-25 03:02:53 +03:00
commit 043225d523
3416 changed files with 681196 additions and 0 deletions

54
cppdraft/lex/header.md Normal file
View File

@@ -0,0 +1,54 @@
[lex.header]
# 5 Lexical conventions [[lex]](./#lex)
## 5.6 Header names [lex.header]
[header-name:](#nt:header-name "5.6Header names[lex.header]")
< [*h-char-sequence*](#nt:h-char-sequence "5.6Header names[lex.header]") >
" [*q-char-sequence*](#nt:q-char-sequence "5.6Header names[lex.header]") "
[h-char-sequence:](#nt:h-char-sequence "5.6Header names[lex.header]")
[*h-char*](#nt:h-char "5.6Header names[lex.header]") [*h-char-sequence*](#nt:h-char-sequence "5.6Header names[lex.header]")opt
[h-char:](#nt:h-char "5.6Header names[lex.header]")
any member of the translation character set except new-line and U+003e greater-than sign
[q-char-sequence:](#nt:q-char-sequence "5.6Header names[lex.header]")
[*q-char*](#nt:q-char "5.6Header names[lex.header]") [*q-char-sequence*](#nt:q-char-sequence "5.6Header names[lex.header]")opt
[q-char:](#nt:q-char "5.6Header names[lex.header]")
any member of the translation character set except new-line and U+0022 quotation mark
[1](#1)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/lex.tex#L715)
The sequences in both forms of [*header-name*](#nt:header-name "5.6Header names[lex.header]")*s* are mapped in animplementation-defined manner to headers or to
external source file names as specified in [[cpp.include]](cpp.include "15.3Source file inclusion")[.](#1.sentence-1)
[*Note [1](#note-1)*:
Header name preprocessing tokens appear only within
a #include preprocessing directive,
a __has_include preprocessing expression, or
after certain occurrences of an import token
(see [[lex.pptoken]](lex.pptoken "5.5Preprocessing tokens"))[.](#1.sentence-2)
— *end note*]
[2](#2)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/lex.tex#L727)
The appearance of either of the characters ' or \ or of
either of the character sequences /* or // in a[*q-char-sequence*](#nt:q-char-sequence "5.6Header names[lex.header]") or an [*h-char-sequence*](#nt:h-char-sequence "5.6Header names[lex.header]") is conditionally-supported with implementation-defined semantics, as is the appearance of the character" in an [*h-char-sequence*](#nt:h-char-sequence "5.6Header names[lex.header]")[.](#2.sentence-1)
[*Note [2](#note-2)*:
Thus, a sequence of characters
that resembles an escape sequence can result in an error, be interpreted as the
character corresponding to the escape sequence, or have a completely different meaning,
depending on the implementation[.](#2.sentence-2)
— *end note*]