Conformance - cppreference.com (original) (raw)

Conformance has a three-fold definition:

Contents

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

[edit] 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 <math.h> and <fenv.h> are fully freestanding headers. However, the behavior of functions in these headers is required to be well-defined in a freestanding environment only if a program does not set the state of the FENV_ACCESS pragma to ON. Some standard library headers are partially freestanding. In <stdlib.h>, memalignment is freestanding. Additionally, when __STDC_IEC_60559_BFP__ or __STDC_IEC_60559_DFP__ are predefined, numeric conversion functions (ato_X_, strto_X_, and strfrom_X_) are also freestanding, while their behavior is required to be well-defined in a freestanding environment only if a program does not set the state of the FENV_ACCESS pragma to ON. No other component in <stdlib.h> is required to be to be provided by a freestanding implementation. In <string.h>, strdup, strndup, strcoll, strxfrm, strtok, and strerror are not 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
Conditionally fully freestanding standard library headers
<fenv.h> (since C23) Floating-point environment
<math.h> (since C23) Common mathematics functions
Partially freestanding standard library headers
<stdlib.h> (since C23) General utilities: memory management, program utilities, string conversions, random numbers, algorithms
<string.h> (since C23) String handling

[edit] References

[edit] See also