4 votes

Microsoft C/C++ : quelle est la définition de "stricte conformité" par rapport à l'implémentation ?

Le contexte :

/Za, /Ze (Désactiver les extensions de langue) :

... le compilateur C se conforme strictement à la norme C89/C90.

/permissive- (Conformité aux normes) :

... et définit les options du compilateur /Zc pour une conformité stricte

Améliorations de la conformité C++, modifications du comportement et corrections de bogues dans Visual Studio 2019. :

... /permissive peut être spécifié pour désactiver le mode de conformité stricte dans le compilateur.

La deuxième option est destinée à désactiver le mode de conformité stricte ...

horloge :

Notez que ce n'est pas strictement conforme à la norme ISO C99 ...

Walkthrough : Compiler un programme C sur la ligne de commande :

MSVC est compatible avec les normes ANSI C89 et ISO C99, mais n'est pas strictement conforme.

Question : quelle est la définition de "stricte conformité" ? A-t-elle été inventée par Microsoft ?

Remarque : les normes C (n2596.pdf) et C++ (n4849.pdf) n'utilisent pas le terme "stricte conformité" / "strictement conforme" appliqué à l'implémentation. L'implémentation est soit conforme, soit non-conforme. Sans gradation.

UPD. À mon avis, par "stricte conformité" (en ce qui concerne l'implémentation), Microsoft entend "implémentation conforme sans prise en charge d'aucune extension".

1voto

dbush Points 8590

En Norme C11 définit un programme et une mise en œuvre strictement conformes dans la section 4, paragraphes 5 à 7, comme suit :

5 A programme strictement conforme ne doit utiliser que les fonctionnalités du langage et de la bibliothèque spécifiées dans le présent document. norme internationale. Il ne doit pas produire de résultats dépendant d'un comportement non spécifié, non défini ou défini par l'implémentation. et ne doit pas dépasser une limite minimale d'implémentation.

6 Les deux formes de application conforme sont hébergés et autonomes. A mise en œuvre hébergée conforme accepte tout programme strictement conforme. A conforme autoportante mise en œuvre accepte tout programme strictement conforme en dans lequel l'utilisation des caractéristiques spécifiées dans la clause de bibliothèque (clause 7) est confinée au contenu des en-têtes standards <float.h>, <iso646.h>, <limits.h>, <stdalign.h>, <stdarg.h>, <stdbool.h>, <stddef.h>, <stdint.h>, et <stdnoreturn.h>. A implémentation conforme peut avoir des extensions (y compris fonctions de bibliothèque supplémentaires), à condition qu'elles ne modifient pas le comportement de tout programme strictement conforme.

7 A programme conforme est celle qui est acceptable pour une implémentation conforme.

Bien que les termes mise en œuvre strictement conforme y stricte conformité n'apparaissent pas ici, ils peuvent être compris comme signifiant une implémentation (dans un mode donné) qui n'acceptera qu'un programme strictement conforme (ou plus précisément, une implémentation qui ne supporte pas les fonctionnalités non spécifiées dans la norme).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X