我想在vscode中使用C20,就像我想在unordered_set上使用. contains一样,但是当我尝试它时,我得到了error C2039: 'contains': is not a member of 'std::unordered_set,我不明白为什么,因为我已经进入c_cpp_properties. json并指定了c20的使用,但它似乎仍然不起作用,而且我找不到任何关于在vscode上更改C++版本的信息。编译器版本:19.25.28614 for x86
error C2039: 'contains': is not a member of 'std::unordered_set
19.25.28614 for x86
axzmvihb1#
必须添加msvc编译器选项/std:c++latest才能使用unordered_map::contains()成员函数。
/std:c++latest
unordered_map::contains()
r1wp621o2#
据我所知,c_cpp_properties. json中关于c版本的设置只是用于帮助您编写代码的服务(智能感知、代码浏览等)。Vscode没有自己的c编译器。它使用您配置的任何编译器。你可能想检查一下你的编译器支持的最新标准。我发现这篇帖子很有帮助。如何确定编译器使用的C++标准的版本?确保使用编译器(编译时或运行时)计算常量。当光标悬停在常量上时,可能会看到不同的值。
zbdgwd5y3#
本页提供了一个很好的说明:https://code.visualstudio.com/docs/cpp/config-msvc缺少的位是cl.exe所需的/std:c++20编译器标志这是一个更新的tasks.json,为我工作:
{ "tasks": [ { "type": "cppbuild", "label": "C/C++: cl.exe build active file", "command": "cl.exe", "args": [ "/Zi", "/EHsc", "/nologo", "/std:c++20", "/Fe:", "${fileDirname}\\${fileBasenameNoExtension}.exe", "${file}" ], "options": { "cwd": "${fileDirname}" }, "problemMatcher": [ "$msCompile" ], "group": { "kind": "build", "isDefault": true }, "detail": "Task generated by Debugger." } ], "version": "2.0.0" }
x3naxklr4#
这是windows版的tsaks.json。只需编辑args并添加"-std=c++23",瞧!你的工作就完成了!我已经从winlibs离线安装了winlibs-x86_64-posix-seh-gcc-12.2.0-llvm-15.0.7-mingw-w 64 ucrt-10.0.0-r4。你也可以做同样的事情。100%正常工作。
args
"-std=c++23"
{ "tasks": [ { "type": "cppbuild", "label": "C/C++: gcc.exe build active file", "command": "C:\\mingw64\\bin\\g++.exe", "args": [ "-fdiagnostics-color=always", "-g", "${file}", "-std=c++23", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe" ], "options": { "cwd": "${fileDirname}" }, "problemMatcher": [ "$gcc" ], "group": { "kind": "build", "isDefault": true }, "detail": "Task generated by Debugger." } ], "version": "2.0.0" }
4条答案
按热度按时间axzmvihb1#
必须添加msvc编译器选项
/std:c++latest
才能使用unordered_map::contains()
成员函数。r1wp621o2#
据我所知,c_cpp_properties. json中关于c版本的设置只是用于帮助您编写代码的服务(智能感知、代码浏览等)。Vscode没有自己的c编译器。它使用您配置的任何编译器。
你可能想检查一下你的编译器支持的最新标准。我发现这篇帖子很有帮助。如何确定编译器使用的C++标准的版本?
确保使用编译器(编译时或运行时)计算常量。当光标悬停在常量上时,可能会看到不同的值。
zbdgwd5y3#
本页提供了一个很好的说明:
https://code.visualstudio.com/docs/cpp/config-msvc
缺少的位是cl.exe所需的/std:c++20编译器标志
这是一个更新的tasks.json,为我工作:
x3naxklr4#
这是windows版的tsaks.json。只需编辑
args
并添加"-std=c++23"
,瞧!你的工作就完成了!我已经从winlibs离线安装了winlibs-x86_64-posix-seh-gcc-12.2.0-llvm-15.0.7-mingw-w 64 ucrt-10.0.0-r4。你也可以做同样的事情。100%正常工作。