VS2013中C99支持的官方状态是什么?

我看到VS2013增加了对C99的大量主要核心语言function的支持。 现在它支持复合文字,指定初始化器,可变参数宏,交错声明和语句,仅举几例。

这表明VS开发人员在Visual Studio中为C99支持做了认真的步骤。 然而,其中一些function并不是C ++语言的一部分,这似乎与之前宣布的开发策略有明显的偏差(例如“VS C编译器只支持那些也是C ++一部分的C99function”)。

那么,有什么官方或半官方的话说明发生了什么? 我似乎无法在网上找到任何确定的东西。 这些C99function是否正式公布? 是否承诺继续在VS中提供C99支持? 或者这只是某种“流氓”的非官方发展?

微软开发人员对此进行了一些公开的官方讨论, C ++一致性路线图说:

Herb还宣布,为了响应客户的要求,RTM版本在编译C代码时还将包含一些战术C99语言扩展,以便一些流行的社区库(包括FFmpeg)现在能够使用Visual C ++ 2013进行编译。

所以这有官方的支持,但是具有战略意义,从以下文章我可以看出,更多的支持必须与其他优先事项竞争。

我们在STL的VS 2013博客条目中有C ++ 11/14 STLfunction,修复和重大变化 :

此外,一些C99核心语言function将在2013 RTM中实施:

  • C99 _Bool

  • C99复合文字

  • C99指定的初始化器

  • C99变量声明

由Pat Brenner撰写的Visual Studio 2013博客文章中的C99库支持,其中包括:

在这篇博文中,我想分享一些有关在Visual Studio 2013中添加到C运行时库的C99支持的信息。

并结束于:

我们知道这不完全支持C99库函数。 据我们所知,缺少的部分是这些:

  • 缺少tgmath.h标头。 此标头需要C编译器支持。 请注意,添加了ctgmath标头 – 这是可能的,因为该标头不需要tgmath.h标头 – 仅ccomplex和cmath标头。
  • 缺少uchar.h标头。 这是来自C Unicode TR。 目前还不支持printf系列中的几个格式说明符。
  • stdio.h和wchar.h中缺少snprintf和snwprintf函数。

这更有趣,因为STL积极地对博客发表评论并且很难总结,但我们可以看到未来的增加将取决于相互竞争的优先事项。

感谢cremno 在Visual Studio 14 CTP1中指出另一篇博客文章C Runtime(CRT)function,修复和重大变化,其中说:

在Visual Studio“14”CTP中,我们完全实现了C99标准库,但任何依赖于Visual C ++编译器尚不支持的编译器function的库特性(特别是未实现)除外。 毫无疑问,一些剩余的一致性问题 – 我们知道一些,包括_Exit丢失,wcstok有错误的签名,我们正在努力解决这些问题。 如果您发现错误或缺少function,请在Microsoft Connect上报告。 如果您现在报告错误,我们很有可能在RTM之前修复它们。

并且有很多不容易总结的细节。