Conformance

Conformance has a three-fold definition:

Explanation

The standard does not define any minimum implementation limit on translation units. A hosted environment has an operating system; a freestanding environment does not. A program running in a hosted environment may use all features described in the library clause (clause 7); a program running in a freestanding environment may use a subset of library features required by clause 4.

Freestanding standard library headers

All standard library features in every fully freestanding header are required to be provided by a freestanding implementation.

Some standard library headers are conditionally freestanding.

  • If the implementation predefines the macro __STDC_IEC_60559_BFP__ or __STDC_IEC_60559_DFP__, then

In a partially freestanding header, only a part of standard library features are required to be provided by a freestanding implementation.

  • strdup, strndup, strcoll, strxfrm, and strerror are not required to be provided by a freestanding implementation.
  • When __STDC_IEC_60559_BFP__ or __STDC_IEC_60559_DFP__ are predefined, in <stdlib.h>, only numeric conversion functions (atoX, strtoX, and strfromX) are required to be provided by a freestanding implementation.
(since C23)
Fully freestanding standard library headers
<float.h> Limits of floating-point types
<iso646.h> (since C95) Alternative operator spellings
<limits.h> Ranges of integer types
<stdalign.h> (since C11) alignas and alignof convenience macros
<stdarg.h> Variable arguments
<stdbool.h> (since C99) Macros for boolean type
<stddef.h> Common macro definitions
<stdint.h> (since C99) Fixed-width integer types
<stdnoreturn.h> (since C11) noreturn convenience macro
<stdbit.h> (since C23) Macros to work with the byte and bit representations of types
Partially freestanding standard library headers
<string.h> (since C23) String handling
Conditionally fully freestanding standard library headers
<fenv.h> (since C23) Floating-point environment
<math.h> (since C23) Common mathematics functions
Conditionally partially freestanding standard library headers
<stdlib.h> (since C23) General utilities: memory management, program utilities, string conversions, random numbers, algorithms

References

See also

C++ documentation for Freestanding and hosted implementation

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/language/conformance