[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 .") 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 , and va_­end(va_­list), declared or defined in .") [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 , , and 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 [](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.syn#header:%3ccsetjmp%3e "17.14.3 Header synopsis [csetjmp.syn]"), andva_end(va_list), declared or defined in[](cstdarg.syn#header:%3ccstdarg%3e "17.14.2 Header synopsis [cstdarg.syn]")[.](#footnote-153.sentence-1) [154)](#footnote-154)[154)](#footnoteref-154) The function signatures declared in[](cuchar.syn#header:%3ccuchar%3e "28.7.4 Header synopsis [cuchar.syn]"),[](cwchar.syn#header:%3ccwchar%3e "28.7.3 Header synopsis [cwchar.syn]"), and[](cwctype.syn#header:%3ccwctype%3e "28.7.2 Header 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)