如何在 vscode 中使用 C++20?

Posted

技术标签:

【中文标题】如何在 vscode 中使用 C++20?【英文标题】:How do I use C++20 in vscode? 【发布时间】: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" 是另一种选择 【参考方案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 中,以使其接受编译指令。

以上是关于如何在 vscode 中使用 C++20?的主要内容,如果未能解决你的问题,请参考以下文章

vscode C语言如何编译多个源文件?

如何在 vscode 终端中使用 git bash 别名?

如何使用 VSCode API 打开文件和插入文本

如何在VSCode内编译运行C++

如何在vscode中编写C和C++

如何在VSCode内编译运行C++