O C should not use any of the C headers.

With the exception of [ ` complex.h ` ](/w/cpp/header/ccomplex
"cpp/header/ccomplex") , each ` _xxx_ .h ` header included in the C++ standard
library places in the global namespace each name that the corresponding ` c
_xxx_ ` 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 ` c _xxx_ ` headers are allowed to also
declare the same names in the global namespace: including [ ` <cstdlib> `
](/w/cpp/header/cstdlib "cpp/header/cstdlib") definitely provides  [ std::
malloc  ](http://en.cppreference.com/w/cpp/memory/c/malloc) and may also
provide  ::  malloc  . Including [ ` <stdlib.h> ` ](/w/c/program "c/program")
definitely provides  ::  malloc  and may also provide  [ std::  malloc
](http://en.cppreference.com/w/cpp/memory/c/malloc) . This applies even to
functions and function overloads that are not part of C standard library.

Notes: ` _xxx_ .h ` headers are deprecated in C++98 and undeprecated in C++23.
These headers are discouraged for pure C++ code, but not subject to future
removal.

[ <assert.h> ](/w/cpp/header/cassert "cpp/header/cassert") |  Behaves same as [ ` <cassert> ` ](/w/cpp/header/cassert "cpp/header/cassert") [ [edit] ](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/header/dsc_assert.h&action=edit)  
---|---  
[ <ctype.h> ](/w/cpp/header/cctype "cpp/header/cctype") |  Behaves as if each name from [ ` <cctype> ` ](/w/cpp/header/cctype "cpp/header/cctype") is placed in global namespace  [ [edit] ](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/header/dsc_ctype.h&action=edit)  
[ <errno.h> ](/w/cpp/header/cerrno "cpp/header/cerrno") |  Behaves same as [ ` <cerrno> ` ](/w/cpp/header/cerrno "cpp/header/cerrno") [ [edit] ](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/header/dsc_errno.h&action=edit)  
[ <fenv.h> ](/w/cpp/header/cfenv "cpp/header/cfenv") (C++11)  |  Behaves as if each name from [ ` <cfenv> ` ](/w/cpp/header/cfenv "cpp/header/cfenv") is placed in global namespace  [ [edit] ](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/header/dsc_fenv.h&action=edit)  
[ <float.h> ](/w/cpp/header/cfloat "cpp/header/cfloat") |  Behaves same as [ ` <cfloat> ` ](/w/cpp/header/cfloat "cpp/header/cfloat") [ [edit] ](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/header/dsc_float.h&action=edit)  
[ <inttypes.h> ](/w/cpp/header/cinttypes "cpp/header/cinttypes") (C++11)  |  Behaves as if each name from [ ` <cinttypes> ` ](/w/cpp/header/cinttypes "cpp/header/cinttypes") is placed in global namespace  [ [edit] ](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/header/dsc_inttypes.h&action=edit)  
[ <limits.h> ](/w/cpp/header/climits "cpp/header/climits") |  Behaves same as [ ` <climits> ` ](/w/cpp/header/climits "cpp/header/climits") [ [edit] ](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/header/dsc_limits.h&action=edit)  
[ <locale.h> ](/w/cpp/header/clocale "cpp/header/clocale") |  Behaves as if each name from [ ` <clocale> ` ](/w/cpp/header/clocale "cpp/header/clocale") is placed in global namespace  [ [edit] ](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/header/dsc_locale.h&action=edit)  
[ <math.h> ](/w/cpp/header/cmath "cpp/header/cmath") |  Behaves as if each name from [ ` <cmath> ` ](/w/cpp/header/cmath "cpp/header/cmath") is placed in global namespace,   
except for names of [ mathematical special functions
](/w/cpp/numeric/special_functions "cpp/numeric/special functions") [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/header/dsc_math.h&action=edit)  
[ <setjmp.h> ](/w/cpp/header/csetjmp "cpp/header/csetjmp") |  Behaves as if each name from [ ` <csetjmp> ` ](/w/cpp/header/csetjmp "cpp/header/csetjmp") is placed in global namespace  [ [edit] ](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/header/dsc_setjmp.h