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

(Added a note about Embedded C)
(Standard Headers)
 
(5 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 +
{{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 9:
 
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;"
+
{{collist
|<[[assert.h]]>
+
| count  = 5
|<[[complex.h]]>
+
| center = yes
|<[[ctype.h]]>
+
| width = 650px
|<[[errno.h]]>
+
|
|<[[fenv.h]]>
+
* {{c header|assert.h}}
|-
+
* {{c header|complex.h}}
|<[[float.h]]>
+
* {{c header|ctype.h}}
|<[[inttypes.h]]>
+
* {{c header|errno.h}}
|<[[iso646.h]]>
+
* {{c header|fenv.h}}
|<[[limits.h]]>
+
* {{c header|float.h}}
|<[[locale.h]]>
+
* {{c header|inttypes.h}}
|-
+
* {{c header|iso646.h}}
|<[[math.h]]>
+
* {{c header|limits.h}}
|<[[setjmp.h]]>
+
* {{c header|locale.h}}
|<[[signal.h]]>
+
* {{c header|math.h}}
|<[[stdalign.h]]>
+
* {{c header|setjmp.h}}
|<[[stdarg.h]]>
+
* {{c header|signal.h}}
|-
+
* {{c header|stdalign.h}}
|<[[stdatomic.h]]>
+
* {{c header|stdarg.h}}
|<[[stdbool.h]]>
+
* {{c header|stdatomic.h}}
|<[[stddef.h]]>
+
* {{c header|stdbool.h}}
|<[[stdint.h]]>
+
* {{c header|stddef.h}}
|<[[stdio.h]]>
+
* {{c header|stdint.h}}
|-
+
* {{c header|stdio.h}}
|<[[stdlib.h]]>
+
* {{c header|stdlib.h}}
|<[[stdnoreturn.h]]>
+
* {{c header|stdnoreturn.h}}
|<[[string.h]]>
+
* {{c header|string.h}}
|<[[tgmath.h]]>
+
* {{c header|tgmath.h}}
|<[[threads.h]]>
+
* {{c header|threads.h}}
|-
+
* {{c header|time.h}}
|<[[time.h]]>
+
* {{c header|uchar.h}}
|<[[uchar.h]]>
+
* {{c header|wchar.h}}
|<[[wchar.h]]>
+
* {{c header|wctype.h}}
|<[[wctype.h]]>
+
}}
|}
 
 
 
  
 
== Optional headers ==
 
== Optional headers ==
Line 50: Line 49:
 
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 63: Line 62:
 
! 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 {{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 ==
 +
* [[List of standard c functions]]
  
 
[[Category:C standard library]]
 
[[Category:C standard library]]

Latest revision as of 14:28, 9 March 2016

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

See also[edit]