C99 Features

Nathaniel McCallum npmccallum at redhat.com
Mon Jun 15 21:06:39 EDT 2015


It has been 16 years. GCC has had support for many C99 features for a
LongTimeNowTM. Clang has had them since the beginning. Clang also now
has official Windows builds (as well as many other platforms).

Of course, MSVC still lags behind. However, they have started
implementing features, including the following since MSVC 2013 [1]:
 * _Bool
 * Compound literals
 * Designated initializers
 * Mixing declarations with code

MS has also implemented most of the C99 libraries[2] and has already
announced complete support for the C99 standard library in MSVC
2015[3]. One of the big elephants in the room is VLAs. MS is unlikely
to ever support them. But, it is also MS's stated policy to only
incorporate C features that are required for C++[4]. I'm not sure that
MIT should hold back support for new C features because MS only wants
to ship a C++ compiler.

So how about it? Can MIT start using C99 features? Even a subset of the
features would be helpful. I particularly care about all the above C99
features that MS implemented plus VLAs. The latter, in particular, can
eliminate a lot of heap allocations.

Nathaniel

[1] http://blogs.msdn.com/b/vcblog/archive/2013/06/28/c-11-14-stl
-features-fixes-and-breaking-changes-in-vs-2013.aspx
[2] http://blogs.msdn.com/b/vcblog/archive/2013/07/19/c99-library
-support-in-visual-studio-2013.aspx?PageIndex=2
[3] http://blogs.msdn.com/b/vcblog/archive/2014/11/17/c-11-14-17
-features-in-vs-2015-preview.aspx
[4] http://blogs.msdn.com/b/vcblog/archive/2015/04/29/c-11-14-17
-features-in-vs-2015-rc.aspx




More information about the krbdev mailing list