VSCode提示std::map无contains成员但C++20编译正常如何解决
问题根因
std::map::contains是C20标准才新增的成员方法,编译时指定了-std=c++20参数所以可以正常生成可执行文件,但VSCode的C/C插件的静态检测默认使用低于C++20的标准做语法校验,因此触发了误报。
修复方案
- 全局生效配置:打开VSCode设置界面,搜索
C_Cpp.default.cppStandard,将选项值修改为c++20即可对所有项目生效。 - 单项目生效配置:在项目根目录下创建
.vscode/c_cpp_properties.json文件,写入如下配置,仅对当前项目启用C++20标准检测:
{ "version": 4, "configurations": [ { "name": "GCC", "compilerPath": "/usr/bin/g++", "cppStandard": "c++20", "intelliSenseMode": "linux-gcc-x64", "includePath": ["${workspaceFolder}/**"] } ] }
- 配置修改完成后,按
Ctrl+Shift+P唤出命令面板,输入「重载窗口」执行,重启IntelliSense检测后误报就会消失。
内容的提问来源于stack exchange,提问作者Wiktor
相关产品推荐
相关产品推荐

