如何在Visual Studio 2019中更改默认的C++语言标准?

4

我希望在我的项目中使用C++17,而不必每次启动新项目时都更改属性。这可行吗?

谢谢!

3个回答

4

如需仅更改项目的默认设置,请参见如何更改默认C ++模板文件?

要更改所有C ++项目的默认值,请查找以下两个.props文件在$(UserRootDir)中,通常为C:\Users\<user name>\AppData\Local\Microsoft\MSBuild\v4.0

    Microsoft.Cpp.Win32.user.props
    Microsoft.Cpp.x64.user.props

请将以下内容插入到Project/ItemDefinitionGroup/ClCompile下方。

    <ConformanceMode>true</ConformanceMode>
    <LanguageStandard>stdcpp17</LanguageStandard>

如果没有.props文件,您需要从头开始创建它们,每个文件应包含以下完整内容。
<?xml version="1.0" encoding="utf-8"?> 
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemDefinitionGroup>
    <ClCompile>
      <ConformanceMode>true</ConformanceMode>
      <LanguageStandard>stdcpp17</LanguageStandard>
    </ClCompile>
  </ItemDefinitionGroup>
</Project>

关于属性文件的更多详细信息,请参见我的此处的其他答案,其中包括在$(VCTargets)中查找每台计算机默认值而不是每个用户默认值(位于$(UserRootDir))。


1
虽然这个答案看起来非常详尽(链接“How to change the default C++ template file?”后面的那个也是),但有点令人不知所措。如果我继续使用VS,我可能会稍后再查看它,但现在@SoronelHaetir的答案相当简单且有效。 - Rintala
@Rintala 当然,这是你的决定,最终取决于个人喜好。但请记住,编辑 .props 文件(无论是通过 GUI 还是直接)会更改所有项目的默认设置,包括过去和未来的项目,这些项目没有明确定义自己的 /std 符合级别。 - dxiv
好的,感谢你指出这一点。目前过去项目属性是否也会发生改变并不重要,但现在我对自己刚才做了什么有了更深刻的理解 :) 我只是把编程作为一种业余爱好学习,所有这些臃肿的IDE让人筋疲力尽。事实上,我刚刚发现了onlinegdb.com,对于我的需求来说,它比VS Code更快,并且使用相同的键盘快捷键(这是我在VS IDE中一直苦恼的问题) 总之,我相信其他人也会发现你的回答很有用! - Rintala
我在 C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Microsoft\VC\v160 找到了 props 文件。 - cho_uc
@cho_uc 这是 $(VCTargetsPath),您可以使用它来更改每台机器的默认设置,而不是每个用户的设置。 - dxiv

2
在“视图->其他窗口->属性管理器”下编辑属性表。接下来,打开项目的树,然后打开您想要更改的平台。
默认情况下,这里的设置会被所有相应平台的项目配置所继承,因此右键单击“Microsoft.Cpp..User”节点,转到C/C++->语言,并设置所需的语言标准,然后单击“确定”。
您可能需要右键单击项目节点并选择保存,我不确定是否必要,请自行判断。

我右键单击项目名称并选择保存,但在创建新项目(因此关闭之前的项目)时,VS打开了一个弹出窗口,显示“一个或多个继承的属性表尚未保存。现在保存”,所以我认为这是关键步骤。现在工作得非常好!谢谢! - Rintala

0
你可以通过设置 (左下角) -> 命令面板.. -> c/c++ 编辑配置(UI) 来实现。这将带您进入 IntelliSense 配置。从那里,您可以更改 C 和 C++ 的版本。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接