59 lines
3.4 KiB
Markdown
59 lines
3.4 KiB
Markdown
[extern.names]
|
||
|
||
# 16 Library introduction [[library]](./#library)
|
||
|
||
## 16.4 Library-wide requirements [[requirements]](requirements#extern.names)
|
||
|
||
### 16.4.5 Constraints on programs [[constraints]](constraints#extern.names)
|
||
|
||
#### 16.4.5.3 Reserved names [[reserved.names]](reserved.names#extern.names)
|
||
|
||
#### 16.4.5.3.4 External linkage [extern.names]
|
||
|
||
[1](#1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/lib-intro.tex#L3291)
|
||
|
||
Each name declared as an object with external linkagein a header is reserved to the implementation to designate that library
|
||
object with external linkage,[152](#footnote-152 "The list of such reserved names includes errno, declared or defined in <cerrno>.") both in namespace std and in the global namespace[.](#1.sentence-1)
|
||
|
||
[2](#2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/lib-intro.tex#L3303)
|
||
|
||
Eachglobal function signature declared withexternal linkage in a header is reserved to the
|
||
implementation to designate that function signature withexternal linkage[.](#2.sentence-1)[153](#footnote-153 "The list of such reserved function signatures with external linkage includes setjmp(jmp_buf), declared or defined in <csetjmp>, and va_end(va_list), declared or defined in <cstdarg>.")
|
||
|
||
[3](#3)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/lib-intro.tex#L3326)
|
||
|
||
Each name from the C standard library declared with external linkageis reserved to the implementation for use as a name withextern "C" linkage,
|
||
both in namespace std and in the global namespace[.](#3.sentence-1)
|
||
|
||
[4](#4)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/lib-intro.tex#L3336)
|
||
|
||
Each function signature from the C standard library declared withexternal linkage
|
||
is reserved to the implementation for use as
|
||
a function signature with bothextern "C" andextern "C++" linkage,[154](#footnote-154 "The function signatures declared in <cuchar>, <cwchar>, and <cwctype> are always reserved, notwithstanding the restrictions imposed in subclause 4.5.1 of Amendment 1 to the C Standard for these headers.") or as a name of namespace scope in the global namespace[.](#4.sentence-1)
|
||
|
||
[152)](#footnote-152)[152)](#footnoteref-152)
|
||
|
||
The list of such reserved names includeserrno, declared or defined in [<cerrno>](errno.general#header:%3ccerrno%3e "19.4.1 General [errno.general]")[.](#footnote-152.sentence-1)
|
||
|
||
[153)](#footnote-153)[153)](#footnoteref-153)
|
||
|
||
The list of such reserved function
|
||
signatures with external linkage includessetjmp(jmp_buf),
|
||
declared or defined in [<csetjmp>](csetjmp.syn#header:%3ccsetjmp%3e "17.14.3 Header <csetjmp> synopsis [csetjmp.syn]"),
|
||
andva_end(va_list),
|
||
declared or defined in[<cstdarg>](cstdarg.syn#header:%3ccstdarg%3e "17.14.2 Header <cstdarg> synopsis [cstdarg.syn]")[.](#footnote-153.sentence-1)
|
||
|
||
[154)](#footnote-154)[154)](#footnoteref-154)
|
||
|
||
The function signatures declared in[<cuchar>](cuchar.syn#header:%3ccuchar%3e "28.7.4 Header <cuchar> synopsis [cuchar.syn]"),[<cwchar>](cwchar.syn#header:%3ccwchar%3e "28.7.3 Header <cwchar> synopsis [cwchar.syn]"),
|
||
and[<cwctype>](cwctype.syn#header:%3ccwctype%3e "28.7.2 Header <cwctype> synopsis [cwctype.syn]") are always reserved, notwithstanding the restrictions imposed in subclause
|
||
4.5.1 of Amendment 1 to the C Standard for these headers[.](#footnote-154.sentence-1)
|