提问人:Tudvari 提问时间:12/24/2016 最后编辑:Aaron LiuTudvari 更新时间:9/11/2022 访问量:255277
如何在Visual Studio中启用C++17编译?
How to enable C++17 compiling in Visual Studio?
问:
我想使用 C++17 功能。
如何在 Microsoft Visual Studio 中将编译从 C++14 切换到 C++17?
或者它在 VS 的发布版本中不可用?
答:
Visual Studio 2015 Update 3 不支持要查找的 C++ 17 功能(返回引用)。emplace_back()
VS 2015 Update 2 的 STL 是 C++ 到目前为止功能完整的 17 个
MSBuild(Visual Studio 项目/解决方案 *.vcproj/*.sln):
添加到项目设置中的其他选项:启用最新功能 - 目前为 C++17,从 VS2017 开始,VS2015 Update 3。/std:c++latest
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/
编辑(2018年10月):此处记录了最新的 VS2017 功能:
https://learn.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++ 功能。最基本的选项是通过在 CMakeLists 中设置目标的属性来启用新式C++标准.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
)
评论
现在有一个下拉列表(至少从 VS 2017.3.5 开始),您可以在其中专门选择 C++17。可用选项包括(在项目 > 属性下> C/C++ >语言> C++语言标准)
- ISO C++14 标准。msvc 命令行选项:
/std:c++14
- ISO C++17 标准。msvc 命令行选项:
/std:c++17
Visual Studio 2022(MSVC C++ 20 和 /std:c++20 开关 - C++ 团队博客):
- ISO C++20 标准。msvc 命令行选项:
/std:c++20
任何 Visual Studio:
- 最新的标准草案。msvc 命令行选项:
/std:c++latest
评论
-std:c++14
-std:c++17
-std:c++latest
-
/std:
gcc
clang
-
:
=
如果将现有的 Visual Studio 2015 解决方案引入 Visual Studio 2017,并且想要使用 c++17 本机编译器生成它,则应首先将解决方案/项目重定向到 v141,然后下拉列表将如上所述显示(配置属性 -> C/C++ -> 语言 -> 语言标准)
Visual Studio 2019 版本:
下拉菜单已移至:
- 右键单击项目(不是解决方案)
- 属性(或 Alt + Enter)
- 从左侧菜单中选择配置属性
- 常规
- 中间有一个选项称为“C++语言标准”
- 旁边是下拉菜单
- 在这里您可以选择默认,ISO C++ 14,17或最新
评论
VS Code 2020 版本
在文件中,(在使用tasks.json
g++-9
)
添加 2020 年功能(2017 年功能)。
添加以使用关键字-std=c++2a
c++1z
-fconcepts
concept
"args": [
"-std=c++2a",
"-fconcepts",
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
现在编译,您可以使用 2020 功能。
评论
c++11
c++14