MSVC is proprietary software; it was originally a standalone product but later became a part of Visual Studio and made available in both trialware and freeware forms.
Microsoft recommends using the multithreaded, dynamic link library (/MD or /MDd compiler option) to avoid possible problems.
[59] Although Microsoft's CRT implements a large subset of POSIX interfaces, the Visual C++ compiler will emit a warning on every use of such functions by default.
[61] Visual C++ 2013 finally added support for various C99 features in its C mode (including designated initializers, compound literals, and the _Bool type),[62] though it was still not complete.
When implemented I expect the feature to work independently of if the traditional or updated preprocessor logic is used._Generic support has been committed to MSVC as of February 2020.
[69] This did not include optional features but Microsoft indicated that they were planning to add support for atomics and threads at a later date.
In version 17.5, partial (since atomic locks are missing) and experimental (meaning hidden behind the compiler flag /experimental:c11atomics) support for atomics was added[70] and in version 17.8, support for threads was added, this time not behind a compiler flag.
[71][72] With default settings MSVC does not do two-phase name lookup which prevents it from flagging a wide range of invalid code.
[73] Describing it as "excellent", BYTE in February 1989 approved of Microsoft C 5.1's OS/2 support, QuickC for interactive development, and CodeView debugger.
Although Watcom C produced slightly faster code, the magazine said that developers "might still prefer Microsoft's friendlier and more powerful tools".