The interface of C++ standard library is defined by the following collection of header files.
For some of the C standard library headers of the form xxx.h
, the C++ standard library both includes an identically-named header and another header of the form cxxx
(all meaningful cxxx
headers are listed above).
With the exception of complex.h
, each xxx.h
header included in the C++ standard library places in the global namespace each name that the corresponding cxxx
header would have placed in the std
namespace.
These headers are allowed to also declare the same names in the std
namespace, and the corresponding cxxx
headers are allowed to also declare the same names in the global namespace: including <cstdlib> definitely provides std::malloc
and may also provide ::malloc
. Including <stdlib.h> definitely provides ::malloc
and may also provide std::malloc
. This applies even to functions and function overloads that are not part of C standard library.
<assert.h> (deprecated) | behaves as if each name from <cassert> is placed in global namespace |
<ctype.h> (deprecated) | behaves as if each name from <cctype> is placed in global namespace |
<errno.h> (deprecated) | behaves as if each name from <cerrno> is placed in global namespace |
<fenv.h> (deprecated) | behaves as if each name from <cfenv> is placed in global namespace |
<float.h> (deprecated) | behaves as if each name from <cfloat> is placed in global namespace |
<inttypes.h> (deprecated) | behaves as if each name from <cinttypes> is placed in global namespace |
<limits.h> (deprecated) | behaves as if each name from <climits> is placed in global namespace |
<locale.h> (deprecated) | behaves as if each name from <clocale> is placed in global namespace |
<math.h> (deprecated) | behaves as if each name from <cmath> is placed in global namespace |
<setjmp.h> (deprecated) | behaves as if each name from <csetjmp> is placed in global namespace |
<signal.h> (deprecated) | behaves as if each name from <csignal> is placed in global namespace |
<stdarg.h> (deprecated) | behaves as if each name from <cstdarg> is placed in global namespace |
<stddef.h> (deprecated) | behaves as if each name from <cstddef> is placed in global namespace |
<stdint.h> (deprecated) | behaves as if each name from <cstdint> is placed in global namespace |
<stdio.h> (deprecated) | behaves as if each name from <cstdio> is placed in global namespace |
<stdlib.h> (deprecated) | behaves as if each name from <cstdlib> is placed in global namespace |
<string.h> (deprecated) | behaves as if each name from <cstring> is placed in global namespace |
<time.h> (deprecated) | behaves as if each name from <ctime> is placed in global namespace |
<uchar.h> (deprecated) | behaves as if each name from <cuchar> is placed in global namespace |
<wchar.h> (deprecated) | behaves as if each name from <cwchar> is placed in global namespace |
<wctype.h> (deprecated) | behaves as if each name from <cwctype> is placed in global namespace |
The C headers <stdatomic.h>
, <stdnoreturn.h>
, and <threads.h>
are not included in C++ and have no cxxx
equivalents.
The headers <complex.h>
, <ccomplex>
, <tgmath.h>
, and <ctgmath>
do not contain any content from the C standard library and instead merely include other headers from the C++ standard library. The use of all these headers is deprecated in C++.
<ccomplex> (since C++11)(deprecated in C++17) | simply includes the header <complex> |
<complex.h> (deprecated) | simply includes the header <complex> |
<ctgmath> (since C++11)(deprecated in C++17) | simply includes the headers <complex> and <cmath> : the overloads equivalent to the contents of the C header tgmath.h are already provided by those headers |
<tgmath.h> (deprecated) | simply includes the header <ctgmath> |
The headers <ciso646>
, <cstdalign>
, and <cstdbool>
are meaningless in C++ because the macros they provide in C are language keywords in C++.
<ciso646> | empty header. The macros that appear in iso646.h in C are keywords in C++ |
<iso646.h> (deprecated) | behaves as if each name from <ciso646> is placed in global namespace |
<cstdalign> (since C++11)(deprecated in C++17) | defines one compatibility macro constant |
<stdalign.h> (deprecated) | behaves as if each name from <cstdalign> is placed in global namespace |
<cstdbool> (since C++11)(deprecated in C++17) | defines one compatibility macro constant |
<stdbool.h> (deprecated) | behaves as if each name from <cstdbool> is placed in global namespace |
C documentation for C Standard Library header files |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
http://en.cppreference.com/w/cpp