The C standard library is a standardized collection of headers and library functions for the C programming language. The library provides a set of commonly used macros, type definitions, and functions to perform common tasks such as string handling, input/output processing, memory allocation, math computations, thread management, and various other common services.
Standard Headers
Related functions, necessary types to use those functions and related macros are grouped into headers. Collectively, they are known as the standard headers.
Standard C provides 29 standard headers. The headers may be included in any order. The headers may also be included more than once - the effect of that is as if it was only included once. All standard C functions have external linkage.
<assert.h> | <complex.h> | <ctype.h> | <errno.h> | <fenv.h> |
<float.h> | <inttypes.h> | <iso646.h> | <limits.h> | <locale.h> |
<math.h> | <setjmp.h> | <signal.h> | <stdalign.h> | <stdarg.h> |
<stdatomic.h> | <stdbool.h> | <stddef.h> | <stdint.h> | <stdio.h> |
<stdlib.h> | <stdnoreturn.h> | <string.h> | <tgmath.h> | <threads.h> |
<time.h> | <uchar.h> | <wchar.h> | <wctype.h> |
Optional headers
3 of the 29 standard headers are optional:
- <complex.h>
- <stdatomic.h>
- <threads.h>
While implementations are encouraged to support those headers, they are not required to.
Detailed description
Header Name | Since | Description |
---|---|---|
<assert.h> | C89 | Provides a set of assertion macros used in assisting with debugging and detecting logic errors. |
<complex.h> | C99 | Provides a set of functions used to manipulate complex numbers. |
<ctype.h> | C89 | Provides a set of functions used for classifying characters. |
<errno.h> | C89 | Provides a set of predefined values for errno. |
<fenv.h> | C99 | Provides a set of functions for controlling the floating-point environment. |
<float.h> | C89 | Provides a set of macros defining the implementation of the floating-point environment. |
<inttypes.h> | C99 | Provides a set of exact width integer types. |
<iso646.h> | NA1 | Provides a set of macros that implement an alternative way of expressing various C operators |
<limits.h> | C89 | Provides a set of macros specifying the implementation-specific limits of the integer types. |
<locale.h> | C89 | Provides a set of functions localization functions |
<math.h> | C89 | Provides a set of common mathematical functions. |
<setjmp.h> | C89 | Provides macros to perform non-local jump operators. |
<signal.h> | C89 | Provides a set of signal handling functions. |
<stdalign.h> | C11 | Provides a set of macros for working with object alignments. |
<stdarg.h> | C89 | Provides a set of macros for working with variadic functions |
<stdatomic.h> | C11 | Provides a set of functions for performing atomic operations on data. |
<stdbool.h> | C99 | Provides boolean macros. |
<stddef.h> | C89 | Provides a set of commonly used type definitions within the standard library. |
<stdint.h> | C99 | Provides a set of exact width integer types. |
<stdio.h> | C89 | Provides a set of standard input/output processing functions. |
<stdlib.h> | C89 | Provides core library functions such as memory management and random number generation. |
<stdnoreturn.h> | C11 | Provides a macro for specifying non-returning functions. |
<string.h> | C89 | Provides a set of string handling functions. |
<tgmath.h> | C99 | Provides a set of type-generic math functions. |
<threads.h> | C11 | Provides a set of thread management functions. |
<time.h> | C89 | Provides a set of date and time handling functions. |
<uchar.h> | C11 | Provides a set of Unicode character manipulation functions. |
<wchar.h> | NA1 | Provides a set of wide string handling functions. |
<wctype.h> | NA1 | Provides a set of functions used for classifying wide characters. |
Embedded C
- Main article: Embedded C
Embedded C introduced two optional headers <stdfix.h> and <iohw.h>. The headers not formally part of the standard library.