From WikiChip
Difference between revisions of "c/standard library"
< c

m (Inject moved page C standard library to c/standard library)
m
Line 1: Line 1:
{{C standards}}
+
{{c title|Standard Library}}
 
The '''C standard library''' is a [[standard library|standardized collection]] of headers and library functions for the [[C|C programming language]]. The library provides a set of commonly used macros, type definitions, and functions to perform common tasks such as [[string manipulation|string handling]], [[IO processing|input/output processing]], [[memory allocation]], [[math computations]], [[thread management]], and various other common services.
 
The '''C standard library''' is a [[standard library|standardized collection]] of headers and library functions for the [[C|C programming language]]. The library provides a set of commonly used macros, type definitions, and functions to perform common tasks such as [[string manipulation|string handling]], [[IO processing|input/output processing]], [[memory allocation]], [[math computations]], [[thread management]], and various other common services.
  
Line 8: Line 8:
  
 
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.
 
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.
 +
  
 
{| style="width: 600px; margin-left: auto; margin-right: auto;"
 
{| style="width: 600px; margin-left: auto; margin-right: auto;"
|<[[assert.h]]>
+
|{{C|assert.h|<assert.h>}}
|<[[complex.h]]>
+
|{{C|complex.h|<complex.h>}}
|<[[ctype.h]]>
+
|{{C|ctype.h|<ctype.h>}}
|<[[errno.h]]>
+
|{{C|errno.h|<errno.h>}}
|<[[fenv.h]]>
+
|{{C|fenv.h|<fenv.h>}}
 
|-
 
|-
|<[[float.h]]>
+
|{{C|float.h|<float.h>}}
|<[[inttypes.h]]>
+
|{{C|inttypes.h|<inttypes.h>}}
|<[[iso646.h]]>
+
|{{C|iso646.h|<iso646.h>}}
|<[[limits.h]]>
+
|{{C|limits.h|<limits.h>}}
|<[[locale.h]]>
+
|{{C|locale.h|<locale.h>}}
 
|-
 
|-
|<[[math.h]]>
+
|{{C|math.h|<math.h>}}
|<[[setjmp.h]]>
+
|{{C|setjmp.h|<setjmp.h>}}
|<[[signal.h]]>
+
|{{C|signal.h|<signal.h>}}
|<[[stdalign.h]]>
+
|{{C|stdalign.h|<stdalign.h>}}
|<[[stdarg.h]]>
+
|{{C|stdarg.h|<stdarg.h>}}
 
|-
 
|-
|<[[stdatomic.h]]>
+
|{{C|stdatomic.h|<stdatomic.h>}}
|<[[stdbool.h]]>
+
|{{C|stdbool.h|<stdbool.h>}}
|<[[stddef.h]]>
+
|{{C|stddef.h|<stddef.h>}}
|<[[stdint.h]]>
+
|{{C|stdint.h|<stdint.h>}}
|<[[stdio.h]]>
+
|{{C|stdio.h|<stdio.h>}}
 
|-
 
|-
|<[[stdlib.h]]>
+
|{{C|stdlib.h|<stdlib.h>}}
|<[[stdnoreturn.h]]>
+
|{{C|stdnoreturn.h|<stdnoreturn.h>}}
|<[[string.h]]>
+
|{{C|string.h|<string.h>}}
|<[[tgmath.h]]>
+
|{{C|tgmath.h|<tgmath.h>}}
|<[[threads.h]]>
+
|{{C|threads.h|<threads.h>}}
 
|-
 
|-
|<[[time.h]]>
+
|{{C|time.h|<time.h>}}
|<[[uchar.h]]>
+
|{{C|uchar.h|<uchar.h>}}
|<[[wchar.h]]>
+
|{{C|wchar.h|<wchar.h>}}
|<[[wctype.h]]>
+
|{{C|wctype.h|<wctype.h>}}
 
|}
 
|}
 
  
 
== Optional headers ==
 
== Optional headers ==
Line 51: Line 51:
 
3 of the 29 standard headers are optional:
 
3 of the 29 standard headers are optional:
  
* <[[complex.h]]>
+
* {{C|complex.h|<complex.h>}}
* <[[stdatomic.h]]>
+
* {{C|stdatomic.h|<stdatomic.h>}}
* <[[threads.h]]>
+
* {{C|threads.h|<threads.h>}}
  
 
While implementations are encouraged to support those headers, they are not required to.
 
While implementations are encouraged to support those headers, they are not required to.
Line 64: Line 64:
 
! Header Name !! Since !! Description
 
! Header Name !! Since !! Description
 
|-
 
|-
|<[[assert.h]]> || C89 || Provides a set of assertion macros used in assisting  with debugging and detecting logic errors.
+
|{{C|assert.h|<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.
+
|{{C|complex.h|<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.
+
|{{C|ctype.h|<ctype.h>}} || C89 || Provides a set of functions used for classifying characters.
 
|-
 
|-
|<[[errno.h]]> || C89 || Provides a set of predefined values for [[errno (C)|errno]].
+
|{{C|errno.h|<errno.h>}} || C89 || Provides a set of predefined values for errno (C)|errno.
 
|-
 
|-
|<[[fenv.h]]> || C99 || Provides a set of functions for controlling the floating-point environment.
+
|{{C|fenv.h|<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.
+
|{{C|float.h|<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.
+
|{{C|inttypes.h|<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
+
|{{C|iso646.h|<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.
+
|{{C|limits.h|<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
+
|{{C|locale.h|<locale.h>}} || C89 || Provides a set of functions localization functions
 
|-
 
|-
|<[[math.h]]> || C89 || Provides a set of common mathematical functions.
+
|{{C|math.h|<math.h>}} || C89 || Provides a set of common mathematical functions.
 
|-
 
|-
|<[[setjmp.h]]> || C89 || Provides macros to perform non-local jump operators.
+
|{{C|setjmp.h|<setjmp.h>}} || C89 || Provides macros to perform non-local jump operators.
 
|-
 
|-
|<[[signal.h]]> || C89 || Provides a set of [[signal handling]] functions.
+
|{{C|signal.h|<signal.h>}} || C89 || Provides a set of signal handling functions.
 
|-
 
|-
|<[[stdalign.h]]> || C11 || Provides a set of macros for working with [[object alignments]].
+
|{{C|stdalign.h|<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 function]]s
+
|{{C|stdarg.h|<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.
+
|{{C|stdatomic.h|<stdatomic.h>}} || C11 || Provides a set of functions for performing atomic operations on data.
 
|-
 
|-
|<[[stdbool.h]]> || C99 || Provides [[boolean]] macros.
+
|{{C|stdbool.h|<stdbool.h>}} || C99 || Provides boolean macros.
 
|-
 
|-
|<[[stddef.h]]> || C89 || Provides a set of commonly used type definitions within the standard library.
+
|{{C|stddef.h|<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.
+
|{{C|stdint.h|<stdint.h>}} || C99 || Provides a set of exact width integer types.
 
|-
 
|-
|<[[stdio.h]]> || C89 || Provides a set of standard input/output processing functions.
+
|{{C|stdio.h|<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.
+
|{{C|stdlib.h|<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]].
+
|{{C|stdnoreturn.h|<stdnoreturn.h>}} || C11 || Provides a macro for specifying non-returning functions.
 
|-
 
|-
|<[[string.h]]> || C89 || Provides a set of [[string handling|string handling functions]].
+
|{{C|string.h|<string.h>}} || C89 || Provides a set of string handling|string handling functions.
 
|-
 
|-
|<[[tgmath.h]]> || C99 || Provides a set of type-generic math functions.
+
|{{C|tgmath.h|<tgmath.h>}} || C99 || Provides a set of type-generic math functions.
 
|-
 
|-
|<[[threads.h]]> || C11 || Provides a set of [[thread management]] functions.
+
|{{C|threads.h|<threads.h>}} || C11 || Provides a set of thread management functions.
 
|-
 
|-
|<[[time.h]]> || C89 || Provides a set of [[date and time handling]] functions.
+
|{{C|time.h|<time.h>}} || C89 || Provides a set of date and time handling functions.
 
|-
 
|-
|<[[uchar.h]]> || C11 || Provides a set of [[Unicode]] character manipulation functions.
+
|{{C|uchar.h|<uchar.h>}} || C11 || Provides a set of Unicode character manipulation functions.
 
|-
 
|-
|<[[wchar.h]]> || NA1 || Provides a set of wide [[string handling|string handling functions]].
+
|{{C|wchar.h|<wchar.h>}} || NA1 || Provides a set of wide string handling|string handling functions.
 
|-
 
|-
|<[[wctype.h]]> || NA1 || Provides a set of functions used for classifying wide characters.
+
|{{C|wctype.h|<wctype.h>}} || NA1 || Provides a set of functions used for classifying wide characters.
 
|}
 
|}
  
 
== Embedded C ==
 
== Embedded C ==
{{main|Embedded C}}
+
{{main|c/embedded|l1=Embedded C}}
Embedded C introduced two optional headers [[stdfix.h - C|<stdfix.h>]] and  [[iohw.h - C|<iohw.h>]]. The headers not formally part of the standard library.
+
Embedded C introduced two optional headers {{C|stdfix.h|<stdfix.h>}} and  {{C|iohw.h|<iohw.h>}}. The headers not formally part of the standard library.
  
 
== See also ==
 
== See also ==

Revision as of 07:44, 4 January 2015

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:

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 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 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 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.

See also