For compatibility with the
C standard library, the C++ standard library provides
the C headers shown in Table 44.
The intended use of these headers is for interoperability only.
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.
The C headers either have no effect,
such as <stdbool.h> and <stdalign.h>, or
otherwise the corresponding header of the form <cname>
provides the same facilities and
assuredly defines them in namespace std.
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).
#include<stdbool.h>// for bool in C, no effect in C++#include<stddef.h>// for size_t#ifdef __cplusplus // see [cpp.predefined]extern"C"// see [dcl.link]#endifvoid f(bool b[], size_t n);
— end example]