如何在Visual Studio中启用C++ 17编译?

Tud*_*ari 89 c++ compilation visual-studio c++17

我想使用C++ 17的功能.

如何在Microsoft Visual Studio中将编译从C++ 14切换到C++ 17?

或者它在VS的发布版本中不可用?

Joh*_*erg 118

现在有一个下降(至少从VS 2017.3.5开始)你可以专门选择C++ 17.可用选项是(在项目>属性> C/C++>语言> C++语言标准下)

  • ISO C++ 14标准(/ std:c ++ 14)
  • ISO C++ 17标准(/ std:c ++ 17)
  • 最新的标准草案(/ std:c ++最新)

  • 语法`-std:c ++ 14`,`-std:c ++ 17`和`-std:c ++ latest`也可以工作,例如当您更喜欢手动输入编译器选项时(使用VS2017测试). (3认同)
  • 我看到来自`gcc`或`clang`的好处.然后`-`不那么具有侵入性(但语法仍然略有不同(`:`而不是`=`)). (3认同)
  • 如果 Visual Studio 2017 > 项目属性 > C / C++ > 语言 > C++ 标准下拉列表中未选择任何内容,则使用什么 C++ 标准?我在下拉列表中有 14、17 和最新版本,但没有选择任何一个,那么在这种情况下如何找到项目中使用的 C++ 标准呢? (3认同)

Zin*_*gam 29

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/

编辑(2018年10月):最新的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开发环境中设置此编译器选项

  1. 打开项目的"属性页"对话框.有关详细信息,请参阅使用项目属性.
  2. 选择配置属性,C/C++,语言.
  3. 在C++ Language Standard中,从下拉控件中选择要支持的语言标准,然后选择"确定"或"应用"以保存更改.

CMake:

Visual Studio 2017(15.7+)支持CMake项目.CMake可以以各种方式启用现代C++功能.最基本的选择是通过在CMakeLists.txt中设置目标的属性来启用现代C++标准:

add_library (${PROJECT_NAME})
set_property (TARGET ${PROJECT_NAME}
  PROPERTY
    # Enable C++17 standard compliance
    CXX_STANDARD 17
)
Run Code Online (Sandbox Code Playgroud)

在接口库的情况下:

add_library (${PROJECT_NAME} INTERFACE)
target_compile_features (${PROJECT_NAME}
  INTERFACE
    # Enable C++17 standard compliance
    cxx_std_17
)
Run Code Online (Sandbox Code Playgroud)


san*_*ser 12

视觉工作室2019版本:

下拉菜单已移至:

  • 右键单击项目(不是解决方案)
  • 属性(或 Alt + Enter)
  • 从左侧菜单中选择配置属性
  • 一般的
  • 中间有一个选项叫“C++ Language Standard”
  • 旁边是下拉菜单
  • 在这里您可以选择默认、ISO C++ 14、17 或最新版本

  • 请记住对“所有配置”和“所有平台”执行此操作。这是来自一个花了 2 个小时弄清楚为什么它仍然不起作用的人!但谢谢你的回答。 (3认同)

小智 5

如果将现有的Visual Studio 2015解决方案引入Visual Studio 2017,并且您想使用c ++ 17本机编译器进行构建,则应首先将解决方案/项目重新定位到v141,然后将如上所示显示下拉列表(配置属性-> C / C ++->语言->语言标准)