Я хочу використовувати функції C ++ 17.
Як переключити компіляцію з C ++ 14 на C ++ 17 в Microsoft Visual Studio?
Або це недоступно у версіях випуску VS?
Я хочу використовувати функції C ++ 17.
Як переключити компіляцію з C ++ 14 на C ++ 17 в Microsoft Visual Studio?
Або це недоступно у версіях випуску VS?
Відповіді:
Зараз є спадне меню (принаймні з VS 2017.3.5), де ви можете спеціально вибрати C ++ 17. Доступні варіанти (у рамках проекту> Властивості> C / C ++> Мова> Стандарт мов C ++)
/std:c++14
/std:c++17
/std:c++latest
(Б'юсь об заклад, щойно C ++ 20 вимкнеться і більш повно підтримується Visual Studio, це буде /std:c++20
)
-std:c++14
, -std:c++17
а -std:c++latest
також працює, наприклад, коли ви віддаєте перевагу вручну вводити параметри компілятора (тестовано з VS2017).
-
замість /std:
перемикачів, які я перераховую?
gcc
або clang
. Тоді -
менш нав'язливий (однак синтаксис все ще незначно відрізняється ( :
замість =
)).
MSBuild (проект / рішення Visual Studio * .vcproj / *. Sln ) :
Додати в додаткові параметри в Налаштуваннях проекту: /std:c++latest
щоб увімкнути останні функції - на даний момент C ++ 17 станом на VS2017, оновлення VS2015 3.
https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/
/permissive-
вимкне нестандартні розширення на C ++ та включить стандартну відповідність у VS2017.
https://blogs.msdn.microsoft.com/vcblog/2016/11/16/permissive-switch/
EDIT (жовтень 2018 р.): Тут задокументовано останні функції VS2017:
https://docs.microsoft.com/en-gb/cpp/build/reference/std-specify-language-standard-version
VS2017 підтримує: /std:[c++14|c++17|c++latest]
зараз. Ці прапори можна встановити через сторінки властивостей проекту:
Щоб встановити цю опцію компілятора в середовищі розробки Visual Studio
- Відкрийте діалогове вікно Сторінок властивостей проекту. Докладніше див. Робота зі властивостями проекту.
- Виберіть Властивості конфігурації, C / C ++, Мова.
- У стандарті мови ++ C ++ виберіть стандарт меню, який слід підтримувати у спадному контролі, а потім виберіть ОК або Застосувати, щоб зберегти зміни.
CMake :
Visual Studio 2017 (15.7+) підтримує проекти CMake. CMake дозволяє включити сучасні функції C ++ різними способами. Найбільш основний варіант - включити сучасний стандарт C ++, встановивши властивість цілі в CMakeLists.txt:
add_library (${PROJECT_NAME})
set_property (TARGET ${PROJECT_NAME}
PROPERTY
# Enable C++17 standard compliance
CXX_STANDARD 17
)
У випадку бібліотеки інтерфейсів:
add_library (${PROJECT_NAME} INTERFACE)
target_compile_features (${PROJECT_NAME}
INTERFACE
# Enable C++17 standard compliance
cxx_std_17
)
Visual Studio 2015 Update 3 не підтримує функцію C ++ 17, яку ви шукаєте ( emplace_back()
повертаючи посилання).
Підтримка функцій C ++ 11/14/17 (сучасний C ++)
C ++ 11/14/17 Особливості у VS 2015 RTM
STL VS 2015 Update 2 - це C ++ 17-поки що функція завершена
Якщо ви вводите існуюче рішення Visual Studio 2015 в Visual Studio 2017, і ви хочете створити його за допомогою власного компілятора c ++ 17, спершу слід перенести цільове рішення / проекти на v141, ТОТЕ спадне меню з’явиться, як описано вище (Властивості конфігурації -> C / C ++ -> Мова -> Стандарт мови)
Версія Visual Studio 2019:
Випадаюче меню було переміщено до:
c++11
іc++14
?