Ответ 1
Единственные "режимы", поддерживаемые Visual C++: режим /std:c++14
для соответствия C++ 14 (по умолчанию), режим /std:c++17
для поддержки C++ 17, который не совсем завершен по сравнению с VS 2017 (15.6), Существует также режим /std:c++latest
, который в будущем будет включать в себя элементы C++ 20. Все это должно быть объединено с /permissive-
для улучшения соответствия.
Чтобы соответствовать стандарту C++ 11 Стандартной библиотеки, Visual C++ должен поддерживать Стандартную библиотеку C99, что не то же самое, что поддержка соответствия языку C99.
В какой-то момент, чтобы соответствовать требованиям C++ 17 Стандартной библиотеки, Visual C++ должен будет поддерживать Стандартную библиотеку C11 и, опять же, это не то же самое, что соответствие языку C11.
См. C++ Соответствие стандартам от Microsoft и C++ 11/14 Функции, исправления и критические изменения STL в VS 2013
В сообщении есть ветка комментариев MSVC: лучший выбор для Windows, где менеджер проекта Visual C++ берет на себя вопрос истинного соответствия "C11".
Hi Onur,
Соответствие C находится на нашем радаре, хотя вначале мы фокусировались на соответствии C++.
Мы проделали некоторую работу в VS 2013 по соответствию C, хотя мы не публиковали это много. Эта работа включает в себя:
- C99 _Bool
- C99 составные литералы
- C99 назначенные инициализаторы
- объявления переменных C99
Мы приближались к концу нашей C++ работы по согласованию. Один из последних предметов является соответствующим препроцессором: функция, общая для C и C++. Препроцессор также отметит начало нашего C-соответствия как конец нашей C++ 98/11/14 работы по согласованию.Андрей