What is the official status of C99 support in VS2013?

There are a few public official discussions of this from Microsoft developers, the C++ Conformance Roadmap which says:

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.

So this has official support but is strategic, from what I can tell form the following articles more support will have to compete with other priorities.

We have the 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

and C99 library support in Visual Studio 2013 blog entry by Pat Brenner which opens with:

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.

and ends with:

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.

which is somewhat more interesting since STL actively addresses comments to the blog and they are hard to summarize but we can see future additions will depend on competing priorities.

Thanks to cremno for pointing out another blog post C Runtime (CRT) Features, Fixes, and Breaking Changes in Visual Studio 14 CTP1 which says:

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.

and has a lot of details that can not be easily summarized.

Leave a Comment