The C standard library or libc is the standard library for the C programming language, as specified in the ANSI C standard. It was developed at the same time as the C library POSIX specification, which is a superset of it. Since ANSI C was adopted by the International Organization for Standardization, the C standard library is also called the ISO C library.
The C standard library provides macros, type definitions and functions for tasks such as string handling, mathematical computations, input/output processing, memory management, and several other operating system services.
The application programming interface (API) of the C standard library is declared in a number of header files. Each header file contains one or more function declarations, data type definitions, and macros.
After a long period of stability, three new header files (iso646.h
, wchar.h
, and wctype.h
) were added with Normative Addendum 1 (NA1), an addition to the C Standard ratified in 1995. Six more header files (complex.h
, fenv.h
, inttypes.h
, stdbool.h
, stdint.h
, and tgmath.h
) were added with C99, a revision to the C Standard published in 1999, and five more files (stdalign.h
, stdatomic.h
, stdnoreturn.h
, threads.h
, and uchar.h
) with C11 in 2011. In total, there are now 29 header files:
Three of the header files (complex.h
, stdatomic.h
, and threads.h
) are conditional features that implementations are not required to support.
The POSIX standard added several nonstandard C headers for Unix-specific functionality. Many have found their way to other architectures. Examples include unistd.h
and signal.h
. A number of other groups are using other nonstandard headers - the GNU C Library has alloca.h
and HP OpenVMS has the va_count()
function.