Namespaces
Variants

Conformance

From cppreference.net

Conformidad tiene una definición triple:

  • programa estrictamente conforme - utiliza únicamente construcciones del lenguaje bien definidas, es decir, construcciones con un único comportamiento. Excluye comportamientos no especificados, indefinidos o definidos por la implementación, y no excede ningún límite mínimo de implementación.
  • programa conforme - aceptable para una implementación conforme.
  • implementación conforme -
    • Una implementación hospedada conforme debe aceptar cualquier programa estrictamente conforme.
    • Una implementación autónoma conforme debe aceptar cualquier programa estrictamente conforme en el que el uso de las características especificadas en la cláusula de biblioteca (cláusula 7) se limite a los contenidos de los encabezados de la biblioteca estándar autónoma (ver más abajo).
    • Una implementación conforme puede tener extensiones (incluyendo funciones adicionales de biblioteca), siempre que no alteren el comportamiento de ningún programa estrictamente conforme.

Contenidos

Explicación

El estándar no define ningún límite mínimo de implementación en las unidades de traducción. Un entorno hospedado tiene un sistema operativo; un entorno independiente no. Un programa que se ejecuta en un entorno hospedado puede usar todas las características descritas en la cláusula de biblioteca (cláusula 7); un programa que se ejecuta en un entorno independiente puede usar un subconjunto de características de biblioteca requeridas por la cláusula 4.

Encabezados de biblioteca estándar independientes

Todas las características de la biblioteca estándar en cada cabecera completamente independiente deben ser proporcionadas por una implementación independiente.

Algunos encabezados de la biblioteca estándar son condicionalmente independientes.

  • Si la implementación predefine la macro __STDC_IEC_60559_BFP__ o __STDC_IEC_60559_DFP__ , entonces <math.h> y <fenv.h> son encabezados completamente independientes. Sin embargo, el comportamiento de las funciones en estos encabezados debe estar bien definido en un entorno independiente solo si un programa no establece el estado de la directiva FENV_ACCESS en ON .

Algunos encabezados de la biblioteca estándar son parcialmente independientes.

  • En <stdlib.h> , memalignment es independiente. Adicionalmente, cuando __STDC_IEC_60559_BFP__ o __STDC_IEC_60559_DFP__ están predefinidos, las funciones de conversión numérica ( ato X , strto X , y strfrom X ) también son independientes, mientras que su comportamiento debe estar bien definido en un entorno independiente solo si un programa no establece el estado de la directiva FENV_ACCESS en ON . Ningún otro componente en <stdlib.h> debe ser proporcionado por una implementación independiente.
  • En <string.h> , strdup , strndup , strcoll , strxfrm , strtok , y strerror no deben ser proporcionados por una implementación independiente.
(desde C23)
Encabezados de biblioteca estándar completamente independientes
<float.h> Límites de tipos de punto flotante
<iso646.h> (desde C95) Grafías alternativas de operadores
<limits.h> Rangos de tipos enteros
<stdalign.h> (desde C11) alignas y alignof macros de conveniencia
<stdarg.h> Argumentos variables
<stdbool.h> (desde C99) Macros para tipo booleano
<stddef.h> Definiciones de macros comunes
<stdint.h> (desde C99) Tipos enteros de ancho fijo
<stdnoreturn.h> (desde C11) noreturn macro de conveniencia
<stdbit.h> (desde C23) Macros para trabajar con representaciones de bytes y bits de tipos
Encabezados de biblioteca estándar condicionalmente completamente independientes
<fenv.h> (desde C23) Entorno de punto flotante
<math.h> (desde C23) Funciones matemáticas comunes
Encabezados de biblioteca estándar parcialmente independientes
<stdlib.h> (desde C23) Utilidades generales: gestión de memoria , utilidades de programa , conversiones de cadenas , números aleatorios , algoritmos
<string.h> (desde C23) Manipulación de cadenas

Referencias

  • Estándar C23 (ISO/IEC 9899:2024):
  • 4 Conformidad (p: 9-10)
  • Estándar C17 (ISO/IEC 9899:2018):
  • 4 Conformidad (p: 4)
  • Estándar C11 (ISO/IEC 9899:2011):
  • 4 Conformidad (p: 8-9)
  • Estándar C99 (ISO/IEC 9899:1999):
  • 4 Conformidad (p: 7-8)
  • Estándar C89/C90 (ISO/IEC 9899:1990):
  • 1.7 Conformidad

Véase también

Documentación de C++ para Implementación independiente y hospedada