top | item 27297799

(no title)

bobbyi_settv | 4 years ago

Microsoft's compiler did not support C99 for a long time because they did not really think of it as a C compiler or a C/ C++ compiler; it is a C++ compiler. Its support for C90 was explained as being maintained "for historical reasons" ( https://herbsutter.com/2012/05/03/reader-qa-what-about-vc-an... ), but they had no reason to add support for new standards of a language that was outside the scope of the project.

It's odd for the author to complain about the commingling of C and C++ in compilers and then complain about Microsoft specifically not doing that.

discuss

order

flohofwoe|4 years ago

The MSVC compiler actually has distinct C and C++ compilers (or at least compilation modes). In C++ mode, no C99 is accepted. What's different from clang and gcc is that the MSVC C++ compiler doesn't accept any "modern C" code, while clang and gcc have C++ language extensions for this (for instance clang accepts the full C99 designated initialization feature set in C++).

pjmlp|4 years ago

I think they only moved away from that path due to customer pressure to keep supporting C on Windows.

That is the official excuse to only support C on Azure Sphere, despite the whole security sales pitch.