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

What is the official status of C99 support in VS2013?

我看到VS2013增加了对C99的大量主要核心语言特性的支持。现在它支持复合文字、指定的初始值设定项、可变参数宏、交错声明和语句等等。

这表明 VS 开发人员在 Visual Studio 中朝着 C99 支持迈出了重要的一步。然而,其中一些功能并不是 C++ 语言的一部分,这似乎与之前宣布的开发策略有显着差异(例如 "VS C compiler will only support those C99 features that are also a part of C++")。

那么,有官方或半官方的说法吗?我似乎无法在网上找到任何确定的东西。这些 C99 功能是否已正式宣布?是否承诺在 VS 中继续支持 C99?或者这只是某种 "rogue" 非官方开发?

Microsoft 开发人员对此进行了一些 public 官方讨论,C++ Conformance Roadmap 说:

Herb also announced that, in response to customer requests, the RTM version will also include a few tactical C99 language extensions when compiling C code, so that some popular community libraries (including FFmpeg) will now be able to compile with Visual C++ 2013.

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

我们有 C++11/14 STL Features, Fixes, And Breaking Changes In VS 2013 Blog entry by STL:

Additionally, some C99 Core Language features will be implemented in 2013 RTM:

  • C99 _Bool

  • C99 compound literals

  • C99 designated initializers

  • C99 variable declarations

C99 library support in Visual Studio 2013 blog entry by Pat Brenner 开头为:

In this blog post I want to share some information about the C99 support added to the C run-time library in Visual Studio 2013.

并以:

结尾

We know that this is not complete support for the C99 library functions. To the best of our understanding, the missing pieces are these:

  • The tgmath.h header is missing. C compiler support is needed for this header. Note that the ctgmath header was added—this is possible because that header does not require the tgmath.h header—only the ccomplex and cmath headers.
  • The uchar.h header is missing. This is from the C Unicode TR. Several format specifiers in the printf family are not yet supported.
  • The snprintf and snwprintf functions are missing from stdio.h and wchar.h.

这更有趣,因为 STL 积极处理博客的评论并且很难总结,但我们可以看到未来的添加将取决于竞争优先级。

感谢 cremno 指出另一个博客 post C Runtime (CRT) Features, Fixes, and Breaking Changes in Visual Studio 14 CTP1 上面写着:

In the Visual Studio "14" CTP we have fully implemented the C99 Standard Library, with the exception of any library features that depend on compiler features not yet supported by the Visual C++ compiler (notably, <tgmath.h> is not implemented). There are undoubtedly some remaining conformance issues--we know of a few, including that _Exit is missing and wcstok has the wrong signature, and we are working to fix these. If you find a bug or a missing feature, please do report it on Microsoft Connect. If you report bugs now, there is a very good chance that we'll be able to fix them before RTM.

而且有很多细节不能简单概括。