【问题标题】:How do I use C++20 in vscode?如何在 vscode 中使用 C++20?
【发布时间】:2020-05-30 09:34:52
【问题描述】:

我想在 vscode 中使用 C++20,因为我想在 unordered_set 上使用 .contains,但是当我尝试它时,我得到了 error C2039: 'contains': is not a member of 'std::unordered_set 而且我不明白为什么,因为我已经继续使用 c_cpp_properties.json 并指定了 c++20 的使用,但它似乎仍然不起作用,而且我在任何地方都找不到有关更改 C++ 版本的任何信息在 vscode 上。

编译器版本:19.25.28614 for x86

【问题讨论】:

  • 看起来您正在使用 Visual Studio 编译器?哪个版本?是否支持你需要的 c++20 特性?
  • 设置"cppStandard": "gnu++20" 是另一种选择

标签: c++ visual-studio-code


【解决方案1】:

您必须添加 msvc 编译器选项 /std:c++latest 才能使用 unordered_map::contains() 成员函数。

【讨论】:

  • 对于 msvc 编译器,我必须输入什么,因为编译器路径当前是文件路径,所以我是否只需将文件路径替换为 /std::c++latest ?我用 /std:c++latest 替换了路径,但我得到“找不到“std:c++latest””并且 IntelliSense 模式 msvc-x64 与编译器路径不兼容。
  • @JustinChee 您不应该更改编译器路径(可能以:cl.exe 结尾)。 /std:c++latest 是程序 cl.exe 的一个选项。在c_cpp_properties.json 你可以试试:"cppStandard": "c++latest"。如果这不起作用,您可以添加 compileCommands 条目并在 compile_commands.json 文件中指定额外选项。
【解决方案2】:

据我所知,c_cpp_properties.json 中有关 c++ 版本的设置仅用于帮助您编写代码的服务(智能感知、代码浏览等)。 Vscode 没有自己的 c++ 编译器。它使用你配置的任何编译器。

您可能想要检查您的编译器支持的最新标准。我发现这篇文章很有帮助。 How to determine the version of the C++ standard used by the compiler?

确保使用编译器(编译时或运行时)评估常量。将光标悬停在其上时,您可能会看到不同的值。

【讨论】:

  • 是的,在这里使用 g++,设置 C_Cpp › 默认值:在扩展设置中将 Cpp Standard 设置为 c++20 只是让曲线警告消失了。我在 .vscode 中的 tasks.json 中手动将“-std=c++20”添加到 args 中,以使其接受编译指令。
猜你喜欢
  • 2021-07-02
  • 2022-07-10
  • 1970-01-01
  • 2022-01-13
  • 2021-08-02
  • 2020-06-06
相关资源
最近更新 更多