51 lines
3.1 KiB
Markdown
51 lines
3.1 KiB
Markdown
[support.c.headers.other]
|
||
|
||
# 17 Language support library [[support]](./#support)
|
||
|
||
## 17.15 C headers [[support.c.headers]](support.c.headers#other)
|
||
|
||
### 17.15.7 Other C headers [support.c.headers.other]
|
||
|
||
[1](#1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/support.tex#L6731)
|
||
|
||
Every C header
|
||
other than[<complex.h>](complex.h.syn#header:%3ccomplex.h%3e "17.15.2 Header <complex.h> synopsis [complex.h.syn]"),[<iso646.h>](iso646.h.syn#header:%3ciso646.h%3e "17.15.3 Header <iso646.h> synopsis [iso646.h.syn]"),[<stdalign.h>](stdalign.h.syn#header:%3cstdalign.h%3e "17.15.4 Header <stdalign.h> synopsis [stdalign.h.syn]"),
|
||
[<stdatomic.h>](stdatomic.h.syn#header:%3cstdatomic.h%3e "32.5.12 C compatibility [stdatomic.h.syn]"),[<stdbit.h>](stdbit.h.syn#header:%3cstdbit.h%3e "22.12 Header <stdbit.h> synopsis [stdbit.h.syn]"),[<stdbool.h>](stdbool.h.syn#header:%3cstdbool.h%3e "17.15.5 Header <stdbool.h> synopsis [stdbool.h.syn]"),[<stdckdint.h>](stdckdint.h.syn#header:%3cstdckdint.h%3e "29.11.1 Header <stdckdint.h> synopsis [stdckdint.h.syn]"), and
|
||
[<tgmath.h>](tgmath.h.syn#header:%3ctgmath.h%3e "17.15.6 Header <tgmath.h> synopsis [tgmath.h.syn]"),
|
||
each of
|
||
which has a name of the form<*name*.h>,
|
||
behaves as if each name placed in the standard library namespace by
|
||
the corresponding<c*name*> header is placed within
|
||
the global namespace scope,
|
||
except for the functions described in [[sf.cmath]](sf.cmath "29.7.6 Mathematical special functions"),
|
||
the std::lerp function overloads ([[c.math.lerp]](c.math.lerp "29.7.4 Linear interpolation")),
|
||
the declaration of std::byte ([[cstddef.syn]](cstddef.syn "17.2.1 Header <cstddef> synopsis")), and
|
||
the functions and function templates described in [[support.types.byteops]](support.types.byteops "17.2.5 byte type operations")[.](#1.sentence-1)
|
||
|
||
It is unspecified whether these names are first declared or defined within
|
||
namespace scope ([[basic.scope.namespace]](basic.scope.namespace "6.4.6 Namespace scope")) of the namespacestd and are then injected into the global namespace scope by
|
||
explicit [*using-declaration*](namespace.udecl#nt:using-declaration "9.10 The using declaration [namespace.udecl]")*s* ([[namespace.udecl]](namespace.udecl "9.10 The using declaration"))[.](#1.sentence-2)
|
||
|
||
[2](#2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/support.tex#L6760)
|
||
|
||
[*Example [1](#example-1)*:
|
||
|
||
The header [<cstdlib>](cstdlib.syn#header:%3ccstdlib%3e "17.2.2 Header <cstdlib> synopsis [cstdlib.syn]") assuredly
|
||
provides its declarations and definitions within the namespacestd[.](#2.sentence-1)
|
||
|
||
It may also provide these names within the
|
||
global namespace[.](#2.sentence-2)
|
||
|
||
The header [<stdlib.h>](support.c.headers.general#header:%3cstdlib.h%3e "17.15.1 General [support.c.headers.general]") assuredly provides the same declarations and definitions within
|
||
the global namespace,
|
||
much as in ISO/IEC 9899[.](#2.sentence-3)
|
||
|
||
It may also provide these names within
|
||
the namespace std[.](#2.sentence-4)
|
||
|
||
â *end example*]
|