MS VS 2008 et C99

J’ai lu avec intérêt le post “Dans quelle mesure C99 est-il supporté de manière universelle?”. L’un des commentaires indique que Microsoft ne prend pas en charge C99. Mais le symbole de commentaire // fonctionne avec VS 2008 et ce symbole est en C99. J’ai deux questions:

  1. Dans quelle mesure VS 2008 prend-il en charge C99?

  2. Est-il possible dans le même code de mélanger les syntaxes C89 et C99? Donc, si j’écris mon code en C89 et que je place ensuite un commentaire //. Cela signifie que j’ai un codage mixte. Alors, que fait le compilateur dans un tel cas? Vérifiez mon code d’abord avec c89 puis avec C99 pour accepter le fait que j’utilise // pour commenter?

MSVC supporte très peu de C99 en mode C. Les quelques choses qu’il fait (comme les commentaires ‘//’) sont en réalité des extensions qu’ils ont ajoutées au mode C90 et qui proviennent du C ++, ce qui peut arriver aussi en C99. Lors de la compilation du code C, MSVC considère les commentaires ‘//’ comme une extension de C90, même si vous mélangez du code C90 avec du code C99.

Vous obtiendrez une meilleure prise en charge de C99 en compilant vos fichiers C en tant que C ++. Ainsi, vous obtiendrez des déclarations pouvant être entrecoupées d’instructions et de déclarations de variables for instructions étendues à la boucle for, par exemple.

Microsoft ne semble avoir aucun intérêt à append la prise en charge de C99 à MSVC – même s’ils ajoutent des éléments de C99 au mode de compilation C ++ (comme l’ajout de stdint.h dans VS2010) car d’autres éléments C99 sont ajoutés à C ++ dans C ++ 0x .