Search results
Feb 26, 2018 · Because the MSVC compiler does not support Variable-length Arrays (VLA) it does not claim C99 conformance. Note that these switches enable the new C99 preprocessor covered in this blog post . VS 2019 (16.11) and VS 2022 also support /std:c++20 .
- Overview
- C++ Standard library features
- C Standard library features
- See also
Standards conformance for the Microsoft C/C++ compiler in Visual Studio (MSVC) is a work in progress. Here's a summary of ISO Standard C and C++ language and library conformance by Visual Studio version. Each C++ compiler and standard library feature name has a link to the ISO Standard C++ proposal paper that describes the feature, when one is available at publication time. The Supported column lists the Visual Studio version in which support for the feature first appeared.
For details on conformance improvements, see C++ conformance improvements in Visual Studio. For a list of other changes, see What's New for Visual C++ in Visual Studio. For conformance changes in earlier versions, see Visual C++ change history and Visual C++ What's New 2003 through 2015. For current news from the C++ team, visit the C++ team blog.
A more detailed listing of Standard Library features and bug fixes by product version is available on the GitHub Microsoft STL wiki Changelog page.
A group of papers listed together indicates a Standard feature along with one or more approved improvements or expansions. These features are implemented together.
Supported values
No Not yet implemented. Partial The implementation is incomplete. For more information, see the Notes section. VS 2010 Supported in Visual Studio 2010. VS 2013 Supported in Visual Studio 2013. VS 2015 Supported in Visual Studio 2015 (RTW). VS 2015.2 and VS 2015.3 indicate features that are supported in Visual Studio 2015 Update 2 and Visual Studio 2015 Update 3, respectively. VS 2017 15.0 Supported in Visual Studio 2017 version 15.0 (RTW). VS 2017 15.3 Supported in Visual Studio 2017 version 15.3. VS 2017 15.5 Supported in Visual Studio 2017 version 15.5. VS 2017 15.7 Supported in Visual Studio 2017 version 15.7. VS 2019 16.0 Supported in Visual Studio 2019 version 16.0 (RTW). VS 2019 16.1 Supported in Visual Studio 2019 version 16.1. VS 2019 16.2 Supported in Visual Studio 2019 version 16.2. VS 2019 16.3 Supported in Visual Studio 2019 version 16.3. VS 2019 16.4 Supported in Visual Studio 2019 version 16.4. VS 2019 16.5 Supported in Visual Studio 2019 version 16.5. VS 2019 16.6 Supported in Visual Studio 2019 version 16.6. VS 2019 16.7 Supported in Visual Studio 2019 version 16.7. VS 2019 16.8 Supported in Visual Studio 2019 version 16.8. VS 2019 16.9 Supported in Visual Studio 2019 version 16.9. VS 2019 16.10 Supported in Visual Studio 2019 version 16.10. VS 2022 17.0 Supported in Visual Studio 2022 version 17.0. VS 2022 17.1 Supported in Visual Studio 2022 version 17.1. VS 2022 17.2 Supported in Visual Studio 2022 version 17.2. VS 2022 17.3 Supported in Visual Studio 2022 version 17.3. VS 2022 17.4 Supported in Visual Studio 2022 version 17.4. VS 2022 17.5 Supported in Visual Studio 2022 version 17.5.
Notes
A In /std:c++14 mode, dynamic exception specifications remain unimplemented, and throw() is still treated as a synonym for __declspec(nothrow). In C++17, dynamic exception specifications were mostly removed by P0003R5, except for one vestige: throw() is deprecated and required to behave as a synonym for noexcept. In /std:c++17 mode, MSVC now conforms to the Standard by giving throw() the same behavior as noexcept, that is, enforcement via termination. The compiler option /Zc:noexceptTypes requests the old behavior of __declspec(nothrow). It's likely that throw() will be removed in a future version of C++. To help with migrating code in response to these changes in the Standard and the Microsoft implementation, new compiler warnings for exception specification issues have been added under /std:c++17 and /permissive-. B Supported in /permissive- mode in Visual Studio 2017 version 15.7. For more information, see Two-phase name lookup support comes to MSVC. C In Visual Studio 2019 version 16.6 and later versions, the compiler fully implements the standard C99 preprocessor via the /Zc:preprocessor option. (In Visual Studio 2017 versions 15.8 through 16.5, the compiler supports the standard C99 preprocessor via the /experimental:preprocessor compiler option.) This option is on by default when the compiler option /std:c11 or /std:c17 is specified. D Supported under /std:c++14 with a suppressible warning, C4984. E The implementation is sufficient to support the C++20 Standard Library. A complete implementation requires a binary breaking change. F Features removed when the /std:c++17 or later compiler option is specified. To re-enable these features (to ease the transition to newer language modes), use these macros: _HAS_AUTO_PTR_ETC, _HAS_FUNCTION_ALLOCATOR_SUPPORT, _HAS_OLD_IOSTREAMS_MEMBERS, and _HAS_UNEXPECTED. G C++17's parallel algorithms library is complete. Complete doesn't mean that every algorithm is parallelized in every case. The most important algorithms have been parallelized. Execution policy signatures are provided even where the implementation doesn't parallelize algorithms. The central internal header, , contains the following "Parallel Algorithms Notes": C++ allows an implementation to implement parallel algorithms as calls to the serial algorithms. This implementation parallelizes several common algorithm calls, but not all. The following algorithms are parallelized: •adjacent_difference, adjacent_find, all_of, any_of, count, count_if, equal, exclusive_scan, find, find_end, find_first_of, find_if, find_if_not, for_each, for_each_n, inclusive_scan, is_heap, is_heap_until, is_partitioned, is_sorted, is_sorted_until, mismatch, none_of, partition, reduce, remove, remove_if, replace, replace_if, search, search_n, set_difference, set_intersection, sort, stable_sort, transform, transform_exclusive_scan, transform_inclusive_scan, transform_reduce These algorithms aren't presently parallelized: •These algorithms show no noticeable parallelism performance improvement on target hardware. All algorithms that merely copy or permute elements with no branches are typically memory bandwidth limited: •copy, copy_n, fill, fill_n, move, reverse, reverse_copy, rotate, rotate_copy, shift_left, shift_right, swap_ranges •Confusion over user parallelism requirements exists for these algorithms, which are likely in the above category anyway: •generate, generate_n •Effective parallelism of these algorithms might be infeasible: •partial_sort, partial_sort_copy •These algorithms haven't been evaluated yet. The library might implement parallelism in a future release: •copy_if, includes, inplace_merge, lexicographical_compare, max_element, merge, min_element, minmax_element, nth_element, partition_copy, remove_copy, remove_copy_if, replace_copy, replace_copy_if, set_symmetric_difference, set_union, stable_partition, unique, unique_copy
When did MSVC get C99 compliance? It has none of the required C99 features that later became optional in C11. As far as I can tell they skipped C99 entirely.
Sep 27, 2021 · I'm not sure if there is any definitive documentation that says its supported. I think VC++ only implements some C99 features, and I don't know of any specific compiler options to enforce a 'C' standard in the same way as there is for C++.
Sep 14, 2020 · Our team is happy to announce that C11 and C17 are becoming supported language versions in the MSVC compiler toolset starting with Visual Studio 2019 version 16.8 Preview 3! For many years Visual Studio has only supported C to the extent of it being required for C++.
Mar 7, 2017 · Our goal for MSVC is to be the best compiler choice on Windows for targeting Windows, regardless of what editor or IDE you choose to use. We aim to deliver on our goal with continuous investments in the following key areas: full C++ conformance, better errors and warnings, runtime performance, reliability, build throughput, and the best security.
People also ask
Does Visual Studio compiler support C99?
Does vs 2019 support C99?
Does MSVC support C99?
Does Visual Studio 2017 support C99 preprocessor?
Does Visual C++ support C99 standard library?
Why do I get a C99 version if I compile in C mode?
Design and build classic Windows desktop programs or Universal Windows apps targeting HoloLens, Surface Hub, PC, and Xbox with the Microsoft Visual C++ toolset and the Visual Studio 2022. Open a codebase from any environment and get to work right away.