VScode C++头文件问题解决
wbvalid 人气:0引言
之前在配置VScode环境的时候,按照网上的文章配置,总是找不到头文件,搜索解决方案,都是千篇一律,没有说到重点。在此详细解释一下。
局部配置全局配置傻傻分不清楚
网上很多文章都在讲一个配置文件c_cpp_properties.json
,但是有些人不知道什么原因是找不到这个配置文件的。在扩展面板中,点击C++的设置进入的页面其实是通用设置页面,大概长这样:
这里只能看到"在settings.json
中编辑"的选项,无论怎么写,都不可能生效,因为真正的配置文件在c_cpp_properties.json
中。settings.json
文件中的都是全局的一些默认配置。比如说,我配置完之后是这样的:
//全局的settings.json { "C_Cpp.default.compilerPath": "C:/MinGW/bin/g++.exe", "C_Cpp.default.includePath": [ "${workspaceFolder}/**", "C:/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++", "C:/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/x86_64-w64-mingw32", "C:/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/backward", "C:/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include", "C:/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include-fixed", "C:/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/include" ], "C_Cpp.default.intelliSenseMode": "linux-gcc-x64", }
这样的配置本身没有错,但是最关键的问题在于,如果之前已经用vscode打开过文件夹,并且在文件夹中自动生成了.vscode
配置文件夹,那么大概率会自动生产一个c_cpp_properties.json
配置文件,并且是不带默认配置的,大概是这样:
//.vscode文件夹局部的配置c_cpp_properties.json { "configurations": [ { "name": "Linux", "includePath": [ "${workspaceFolder}/**" //问题就出在这一行 ], "defines": [], "compilerPath": "C:/MinGW/bin/g++.exe", "cStandard": "c11", "cppStandard": "c++11", "intelliSenseMode": "linux-gcc-x64" } ], "version": 4 }
如果.vscode
局部的配置文件没有显示的声明c_cpp插件的includePath
那么相当于只有这一行"${workspaceFolder}"
的配置生效,也就是只在当前工作目录下查找头文件,那能找到才怪咧。
因此,要特别注意,如果发现include头文件出现问题,首先看一下.vscode
目录下的配置是否正确,然后再去看全局的配置。
这种情况的解决方案很简单,因为全局的default配置已经写好了include的路径,只需要在局部的配置这儿增加一行"${default}"
即可:
//.vscode文件夹局部的配置c_cpp_properties.json { "configurations": [ { "name": "Linux", "includePath": [ "${workspaceFolder}/**", "${default}" //只需要加这一行,就是这么简单 ], "defines": [], "compilerPath": "C:/MinGW/bin/g++.exe", "cStandard": "c11", "cppStandard": "c++11", "intelliSenseMode": "linux-gcc-x64" } ], "version": 4 }
加"${default}"
的效果,就是让局部配置去调用全局配置中的默认选项,也就是全局settings.json
中的那些配置。
一些有帮助的信息
- 不要直接在sourceforge下载mingw64,很大概率你下载到的是源码包,需要在特定环境下之后才能用,在源码包里是找不到g++.exe之类的东西的,不要浪费时间直接去找网盘下编译好的build。
- 解压build之后,通常放在C盘根目录下,然后找到系统高级设置,配置环境变量。要注意,如果配置的是系统环境变量而非用户环境变量时,需要注销后生效,不需要重启电脑。
- 具体includePath是什么,在配置好环境变量之后,也就是CMD中输入gcc -v可以看到正常输出之后,在CMD中输入gcc -v -E -x c++ -命令,就可以列出所有的include路径,加上双引号之后就可以copy到对应的json配置中了。
总结
加载全部内容