Namespaces
Variants

Conformance

From cppreference.net

Conformité a une définition triple :

  • programme strictement conforme - utilise uniquement des constructions de langage bien définies, c'est-à-dire des constructions ayant un comportement unique. Il exclut tout comportement non spécifié, indéfini ou défini par l'implémentation, et ne dépasse aucune limite minimale d'implémentation.
  • programme conforme - acceptable par une implémentation conforme.
  • implémentation conforme -
    • Une implémentation hébergée conforme doit accepter tout programme strictement conforme.
    • Une implémentation autonome conforme doit accepter tout programme strictement conforme dans lequel l'utilisation des fonctionnalités spécifiées dans la clause bibliothèque (clause 7) est limitée au contenu des en-têtes standards autonomes (voir ci-dessous).
    • Une implémentation conforme peut avoir des extensions (y compris des fonctions de bibliothèque supplémentaires), à condition qu'elles n'altèrent pas le comportement d'un programme strictement conforme.

Table des matières

Explication

La norme ne définit aucune limite minimale d'implémentation sur les unités de traduction. Un environnement hébergé dispose d'un système d'exploitation ; un environnement autonome n'en dispose pas. Un programme s'exécutant dans un environnement hébergé peut utiliser toutes les fonctionnalités décrites dans la clause de bibliothèque (clause 7) ; un programme s'exécutant dans un environnement autonome peut utiliser un sous-ensemble des fonctionnalités de bibliothèque requises par la clause 4.

En-têtes standards autonomes de la bibliothèque

Toutes les fonctionnalités de la bibliothèque standard dans chaque en-tête entièrement autonome doivent être fournies par une implémentation autonome.

Certains en-têtes de la bibliothèque standard sont conditionnellement autonomes.

  • Si l'implémentation prédéfinit la macro __STDC_IEC_60559_BFP__ ou __STDC_IEC_60559_DFP__ , alors <math.h> et <fenv.h> sont des en-têtes entièrement autonomes. Cependant, le comportement des fonctions dans ces en-têtes n'est requis d'être bien défini dans un environnement autonome que si un programme ne définit pas l'état de la pragma FENV_ACCESS à ON .

Certains en-têtes de la bibliothèque standard sont partiellement autonomes.

  • Dans <stdlib.h> , memalignment est autonome. De plus, lorsque __STDC_IEC_60559_BFP__ ou __STDC_IEC_60559_DFP__ sont prédéfinis, les fonctions de conversion numérique ( ato X , strto X , et strfrom X ) sont également autonomes, tandis que leur comportement n'est requis d'être bien défini dans un environnement autonome que si un programme ne définit pas l'état de la pragma FENV_ACCESS à ON . Aucun autre composant dans <stdlib.h> n'est requis d'être fourni par une implémentation autonome.
  • Dans <string.h> , strdup , strndup , strcoll , strxfrm , strtok , et strerror ne sont pas requis d'être fournis par une implémentation autonome.
(depuis C23)
En-têtes standards complètement autonomes
<float.h> Limites des types à virgule flottante
<iso646.h> (depuis C95) Orthographes alternatives des opérateurs
<limits.h> Plages des types entiers
<stdalign.h> (depuis C11) alignas et alignof macros de commodité
<stdarg.h> Arguments variables
<stdbool.h> (depuis C99) Macros pour le type booléen
<stddef.h> Définitions de macros communes
<stdint.h> (depuis C99) Types entiers de largeur fixe
<stdnoreturn.h> (depuis C11) noreturn macro de commodité
<stdbit.h> (depuis C23) Macros pour travailler avec les représentations en octets et en bits des types
En-têtes standards conditionnellement complètement autonomes
<fenv.h> (depuis C23) Environnement à virgule flottante
<math.h> (depuis C23) Fonctions mathématiques courantes
En-têtes standards partiellement autonomes
<stdlib.h> (depuis C23) Utilitaires généraux : gestion de la mémoire , utilitaires de programme , conversions de chaînes , nombres aléatoires , algorithmes
<string.h> (depuis C23) Manipulation de chaînes

Références

  • Norme C23 (ISO/CEI 9899:2024) :
  • 4 Conformité (p: 9-10)
  • Norme C17 (ISO/CEI 9899:2018) :
  • 4 Conformité (p: 4)
  • Norme C11 (ISO/IEC 9899:2011) :
  • 4 Conformité (p: 8-9)
  • Norme C99 (ISO/CEI 9899:1999) :
  • 4 Conformité (p: 7-8)
  • Norme C89/C90 (ISO/CEI 9899:1990) :
  • 1.7 Conformité

Voir aussi

Documentation C++ pour Implémentation autonome et hébergée