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[edit]
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.
Optional headers[edit]
3 of the 29 standard headers are optional:
While implementations are encouraged to support those headers, they are not required to.
Detailed description[edit]
| Header Name | Since | Description |
|---|---|---|
| <assert.h> | C89 | Provides a set of assertion macros used in assisting with debugging and detecting logic errors. |
| <complex.h> | C99op | 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> | C11op | 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 | string handling functions. |
| <tgmath.h> | C99 | Provides a set of type-generic math functions. |
| <threads.h> | C11op | 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 | string handling functions. |
| <wctype.h> | NA1 | Provides a set of functions used for classifying wide characters. |
Embedded C[edit]
- Main article: Embedded C
Embedded C introduced two optional headers <stdfix.h> and <iohw.h>.
- The headers not formally part of the standard library.