当前位置: 首页 > 知识库问答 >
问题:

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

乌灿
2023-03-14

我想使用C17功能。

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

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

共有3个答案

计胤
2023-03-14

Visual Studio 2015 Update 3不支持您正在查找的C 17功能(emplace_back()返回引用)。

支持C 11/14/17功能(现代C)

2017年11月14日VS 2015 RTM中的功能

VS 2015更新2的STL到目前为止是C 17功能完成

Visual Studio 2015更新3

STL修复VS 2015更新3

丌官和泰
2023-03-14

MSBuild(Visual Studio项目/解决方案*. vcproj/*. sln):

添加到项目设置中的其他选项:/std: c最新以启用最新功能-当前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最新]。这些标志可以通过项目的属性页来设置:

在Visual Studio开发环境中设置此编译器选项

  1. 打开项目的“属性页”对话框。有关详细信息,请参见使用项目属性

CMake:

Visual Studio2017 (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
)

在接口库的情况下:

add_library (${PROJECT_NAME} INTERFACE)
target_compile_features (${PROJECT_NAME}
  INTERFACE
    # Enable C++17 standard compliance
    cxx_std_17
)
宁欣怿
2023-03-14

现在有一个下拉列表(至少从2017年3月5日起),您可以在其中特别选择C 17。可用选项包括(在“项目”下)

  • ISO C 14标准。msvc命令行选项:/std:c14
  • ISO C 17标准。msvc命令行选项:/std:c17

Visual Studio 2022(MSVC C 20和/std:C 20开关-C团队博客):

  • ISO C 20标准。msvc命令行选项:/std:c20

任何Visual Studio:

    msvc命令行选项: /std: c最新的
 类似资料:
  • 我正在学习Visual Studio Code上的Java。我已经在其中安装了"Microsoft扩展Java"。我的基本Java程序运行良好,无需软件包声明。但我想打包我的程序。如何? 早些时候我用了“IntelliJ IDEA”。我曾经启动一个新项目并声明“package com.java.learn”。在VisualStudio代码中,没有创建新java项目的选项。有一个创建工作区的选项,但

  • 我想比较visual studio中的两个文件(包含存储过程的文件),所以我想忽略文件中所有的差异。 我打开命令窗口,使用但它也考虑了案例差异 我已经看过这个问题和答案了

  • 我正在配置一个现有项目(dotnet core)以使用私有nuget存储库。我已经按照以下结构设置了我的项目: 项目1 如果我要运行“dotnet还原”命令,但在使用Visual Studio的构建(MSBuild)时不能恢复我的包。 我希望能够在使用Visual Studio的MSBuild时还原我的包。(不使用cli) 如果可能的话,我希望避免在生成之前使用msbuild的Exec任务运行do

  • VisualStudio (GitHub Extension for Visual Studio) 是 GitHub 的 Visual Studio 插件。 主要功能: 连接 GitHub 一键 clone 创建新库 发布本地库

  • 问题内容: 尝试执行以下行时,仅显示最后两个语句(“ Here is some ERROR”和“ Here is some FATAL”),并且不显示前三个语句。我刚刚开始学习此主题,任何人都可以告诉为什么会这样呢? log4j.property有 问题答案: 您可能在项目中的某个地方有一个log4j.properties文件。在该文件中,您可以配置所需的调试输出级别。请参阅以下示例: 第一行将根

  • 问题内容: 我使用Flickr照片搜索API的JavaScript创建了一个演示。现在,我将其转换为AngularJs。我在互联网上搜索,发现下面的配置。 组态: 服务: 控制器: 问题答案: 你不知道 您请求的服务器必须实现CORS才能从您的网站访问权限中授予JavaScript。您的JavaScript无法授予自己访问其他网站的权限。