Je suis nouveau dans Visual Studio Environment et j'utilise VS2017 Pro. Je voulais écrire un programme simple en C et compilé avec les deux c99
et c11
normes. Dans Visual Studio, je ne pouvais trouver que des commutateurs de compilateur pour les normes C++ uniquement.
Comment pouvons-nous dire à l'environnement de studio visuel que nous voulons compiler le code actuel avec c99
et c11
[~ # ~] c [~ # ~] normes.
Les seuls "modes" pris en charge par Visual C++ sont: /std:c++14
mode pour la conformité C++ 14 (par défaut), /std:c++17
mode pour le support C++ 17 qui n'est pas tout à fait complet à partir de VS 2017 (15.6). Il y a aussi /std:c++latest
mode qui, à un moment donné, inclura des choses en C++ 20. Tous ces éléments doivent être combinés avec /permissive-
pour une meilleure conformité.
Pour respecter la conformité à la bibliothèque standard C++ 11, Visual C++ doit prendre en charge la bibliothèque standard C99, ce n'est pas la même chose que la prise en charge de la conformité au langage C99.
À un moment donné pour répondre aux exigences de la bibliothèque standard C++ 17, Visual C++ devra prendre en charge la bibliothèque standard C11 et là encore ce n'est pas la même chose que la conformité au langage C11.
Voir Conformité aux normes C++ de Microsoft et Fonctionnalités STL C++ 11/14, correctifs et changements de rupture dans VS 201
Il y a un fil de commentaires dans le post MSVC: le meilleur choix pour Windows où un chef de projet Visual C++ se pose la question de la vraie conformité 'C11'.
Salut Onur,
La conformité C est sur notre radar bien que nous nous concentrions d'abord sur la conformité C++.
Nous avons effectué des travaux dans VS 2013 sur la conformité C, mais nous ne l'avons pas beaucoup publicisé. Ce travail comprenait:
- C99 _Bool
- Littéraux composés C99
- Initialiseurs désignés C99
- Déclarations de variables C99
Nous approchons de la fin de notre travail de conformité C++. Un des derniers éléments est un préprocesseur conforme: une fonctionnalité partagée par C et C++. Le préprocesseur marquera le début de notre Push de conformité C ainsi que la fin de notre travail de conformité C++ 98/11/14.Andrew
Visual Studio est principalement un compilateur C++. En "mode C", il suit une ancienne norme C de 1990.
Vers 2013-2015, ils ont fait des efforts pour prendre en charge non pas la norme C actuelle, mais la norme C précédente de 1999 ("C99"), quelque 16 ans après sa publication. Cependant, les travaux pour se conformer à cette norme ne sont pas terminés.
Je crois que le compilateur prend également en charge quelques fonctionnalités sélectionnées du langage C actuel ("C11") telles que la bibliothèque facultative de vérification des limites. Cette norme est disponible depuis 7 ans mais n'est pas entièrement prise en charge.
Donc, si vous avez besoin d'un compilateur en langage C conforme, vous devriez chercher d'autres alternatives.