[support.c.headers.general] # 17 Language support library [[support]](./#support) ## 17.15 C headers [[support.c.headers]](support.c.headers#general) ### 17.15.1 General [support.c.headers.general] [1](#1) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/support.tex#L6575) For compatibility with theC standard library, the C++ standard library provides the [*C headers*](#def:headers,C_library "17.15.1 General [support.c.headers.general]") shown in Table [47](#tab:c.headers "Table 47: C headers")[.](#1.sentence-1) The intended use of these headers is for interoperability only[.](#1.sentence-2) It is possible that C++ source files need to include one of these headers in order to be valid C. Source files that are not intended to also be valid C should not use any of the C headers[.](#1.sentence-3) [*Note [1](#note-1)*: The C headers either have no effect, such as [](stdbool.h.syn#header:%3cstdbool.h%3e "17.15.5 Header synopsis [stdbool.h.syn]") and [](stdalign.h.syn#header:%3cstdalign.h%3e "17.15.4 Header synopsis [stdalign.h.syn]"), or otherwise the corresponding header of the form provides the same facilities and assuredly defines them in namespace std[.](#1.sentence-4) — *end note*] [*Example [1](#example-1)*: The following source file is both valid C++ and valid C. Viewed as C++, it declares a function with C language linkage; viewed as C it simply declares a function (and provides a prototype)[.](#1.sentence-5) #include // for char8_t in C, not necessary in C++#include // for size_t#ifdef __cplusplus // see [[cpp.predefined]](cpp.predefined "15.12 Predefined macro names")extern "C" // see [[dcl.link]](dcl.link "9.12 Linkage specifications")#endifvoid f(char8_t s[], size_t n); — *end example*] Table [47](#tab:c.headers) — C headers [[tab:c.headers]](./tab:c.headers) | [🔗](#tab:c.headers-row-1)
| | | [](stdckdint.h.syn#header:%3cstdckdint.h%3e "29.11.1 Header synopsis [stdckdint.h.syn]") | [](tgmath.h.syn#header:%3ctgmath.h%3e "17.15.6 Header synopsis [tgmath.h.syn]") | | --- | --- | --- | --- | --- | | [🔗](#tab:c.headers-row-2)
[](complex.h.syn#header:%3ccomplex.h%3e "17.15.2 Header synopsis [complex.h.syn]") | [](iso646.h.syn#header:%3ciso646.h%3e "17.15.3 Header synopsis [iso646.h.syn]") | [](stdalign.h.syn#header:%3cstdalign.h%3e "17.15.4 Header synopsis [stdalign.h.syn]") | | | | [🔗](#tab:c.headers-row-3)
| | | | | | [🔗](#tab:c.headers-row-4)
| | [](stdatomic.h.syn#header:%3cstdatomic.h%3e "32.5.12 C compatibility [stdatomic.h.syn]") | | | | [🔗](#tab:c.headers-row-5)
| | [](stdbit.h.syn#header:%3cstdbit.h%3e "22.12 Header synopsis [stdbit.h.syn]") | | | | [🔗](#tab:c.headers-row-6)
| | [](stdbool.h.syn#header:%3cstdbool.h%3e "17.15.5 Header synopsis [stdbool.h.syn]") | | |