VS Code搭配MinGW 6.3.0引入<string_view>提示更新includePath错误如何解决
问题原因
你遇到的头文件找不到问题核心有两个:
- MinGW GCC 6.3.0对C++17的支持为实验性阶段,标准库中的
string_view头文件未纳入常规标准库路径,而是存放在experimental子目录下 - c_cpp_properties.json的
includePath配置未加入MinGW标准库路径,仅配置了工作区路径,智能感知无法扫描到系统标准库头文件
解决方案
方案一:适配现有GCC 6.3.0版本
- 修正头文件引用和命名空间
将代码修改为:
#include <experimental/string_view> using namespace std::experimental; // 也可以保留using namespace std; 使用时写string_view的全路径即可
- 修正c_cpp_properties.json配置
把MinGW标准库路径补到includePath字段,同时修正智能感知架构参数:
{ "configurations": [ { "name": "Win32", "includePath": [ "${workspaceFolder}/**", "C:/MinGW/lib/gcc/mingw32/6.3.0/include", "C:/MinGW/lib/gcc/mingw32/6.3.0/include-fixed", "C:/MinGW/include/*" ], "defines": [ "_DEBUG", "UNICODE", "_UNICODE" ], "browse": { "path": [ "C:/MinGW/lib/gcc/mingw32/6.3.0/include", "C:/MinGW/lib/gcc/mingw32/6.3.0/include-fixed", "C:/MinGW/include/*", "${workspaceRoot}" ], "limitSymbolsToIncludedHeaders": true, "databaseFilename": "" }, "compilerPath": "C:/MinGW/bin/g++.exe", "cStandard": "c11", "cppStandard": "c++17", "intelliSenseMode": "gcc-x86" } ], "version": 4 }
- 补全编译参数
如果使用VS Code的tasks.json完成编译,需要在g的编译参数中添加-std=c++17,确保编译时开启C17特性支持。
方案二:升级MinGW版本(更推荐)
直接卸载现有32位MinGW,更换为MinGW-w64 GCC 8.0及以上版本,高版本GCC对C++17的支持已经完全成熟,string_view直接放在标准库路径下,无需修改头文件引用,按正常语法写代码即可。
内容的提问来源于stack exchange,提问作者hyemin ju
相关产品推荐
相关产品推荐

