Last year I vented my frustration that Visual C++ was the only mainstream C compiler that had almost no C99 support: Microsoft, please support (at least a tiny bit of) C99. I did not have much hope that anything would change, since their stated position seemed firm that C99 was not a priority.

I’m not sure how I missed this at the time, but a few months ago there was a blog post: C++11/14 STL Features, Fixes, And Breaking Changes In VS 2013. In addition to a bunch of C++ features, it contains this key excerpt:

Additionally, some C99 Core Language features will be implemented in 2013 RTM:
  • C99 _Bool
  • C99 compound literals
  • C99 designated initializers
  • C99 variable declarations

These are some of the most welcome parts of C99 to see implemented (since they are some of the hardest to work around when absent). I’m not sure what caused this about-face, but presuming this is released as expected, I feel compelled to say: thank you Microsoft!

Hopefully this will obsolete the need for c99-to-c89, which I must give props to as a very clever hack for working around this problem.

(It appears VC++ 2013 will also contain extensive support for the C99 standard library, as detailed in C99 library support in Visual Studio 2013; while this is less critical to me personally, I’m sure others will welcome this development also).