Hacker News new | ask | show | jobs
by ComputerGuru 2623 days ago
While MSVC doesn't have full C99 support, MSVC supported most of the features that shipped in C99 that make it much less painful to develop in C quite a number of years before C99 support formally landed in other compilers. MS will probably never support full C99 because the demand isn't there, but it's certainly not ANSI C you are expected to write.
1 comments

MSVC support C11 because it a prerequisite for C++17. The limits are you need to compile in C++, so the very few changes/incompatibilities between C and C++ always bend to the C++ choices. The preprocessor isn't what people used to have in C99 so some macro still not portable.
To the best of my knowledge (i.e. not updated since C++14), C++ is no longer a strict superset of C as of C99, and there are C99 features that are not available in C++, so I'm not sure that's the case. But plenty of overlap, for sure.

Here's a community wiki answer on SO: https://stackoverflow.com/posts/47526708/revisions

Extracted portion of relevance:

    > The following C99 features are not supported by C++:
    >
    > * restricted pointers
    > * variable length arrays
    > * flexible array members
    > * static and type qualifiers in parameter array declarators
    > * compound literals
    > * designated initializers