如何在 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?的主要内容,如果未能解决你的问题,请参考以下文章