Reconsider position on c99/11
This has been declined before. However, I feel that Microsoft should look at this again to be more in parity with other operating systems.
A lot of C code is still in use in many places for numerical code. These libraries also tend to be unix only making windows a second class citizen.
Consider that gcc and clang, available on Linux and OSX, both provide a competitive c++ compiler as well as a c compiler. This puts windows developers for numeric tools at a disadvantage if they want to stick to using VS. ICC is available at an expense but with the community edition of VS available it would make sense to at least bring parity to the other OSs. A lot of good work is being done in C which either requires mingw or to switch to Linux. Proper C support would at least help make those who want to stick with windows's lives easier.
James Lowden commented
Lack of VLA and _Generic support make a mockery of Microsoft's C compiler.
Perhaps Microsoft is unaware of how many open source projects are written in C and make specific effort to support Windows, and Visual Studio in particular. I know they're not unaware, but they're acting either as if they are, or as if they don't care, or as if they don't want those projects to be easily compatible with Windows. What other interpretation is there?
Open source developers by and large don't program on Windows first. First, they use a fully functional C11 compiler. Then, when Microsoft's premier development tool won't compile the code, they make changes. Either they stop using new constructs, or they develop a macro, or they drop Windows as a target.
Perhaps you are hard at it but are focussed at present on C++, but that's not the same as saying Microsoft is committed to C11. Commitment would not result being outdone, twice, by a bunch of guys (mostly) working at home in their spare time.
@Visual Studio Team,
I need C99 for having portable C code between Windows / Linux / macOS.
For instance the use of `restrict`.
Yes, it can be bypassed with Macros bu what about just having C99 as first class citizen with strict support?
It will be appreciated.
Andrew Pardoe [MSFT] commented
The MSVC team plans to achieve C conformance but we are first very focused on completing our C++ conformance work.
We have done some C99 conformance work, most notably C99 _Bool, compound literals, C99 designated initializers, and variable declaration a couple of years back. More recently as we've implemented C++ features that resemble C features we have also implemented their C counterparts.
Lastly, we have started to implement a conforming preprocessor for both C++ and C conformance.
I can't comment on a timeline for C conformance, but we have heard this request. Thank you!
Also, please see this request for VLAs, though I'd prefer that users upvote this more general suggestion than a VLA-specific suggestion: https://visualstudio.uservoice.com/forums/121579-visual-studio-ide/suggestions/11580261-support-c99-variable-length-arrays
Jeff Hammond commented
designated initializers for struct, complex numbers (i.e. complex.h) and VLAs.
Hi, thanks for the feedback.
Can you share specific examples of scenarios where our existing c99 support is insufficient? It would help us better understand the challenges developers face.