VSCode/VS2019#include头文件时找不到头文件:我的解决方法
0.前言
1.在学习了Linux之后,我平常大部分都使用本地的XShell或者VSCode连接远程云服务器写代码,CentOS的包管理器为我省去了不少繁琐的事情,今天使用vscode打开本地目录想写点代码发现#include头文件后,下方出现了波浪线:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <fcntl.h>
前面介绍VSCode的解决方法,最后介绍VS2019的解决方法。
2.我的解决方法VSCode:
依次点击并打开。
你将来到"settings.json",这是一个全局的默认配置文件。
如果你没有下面的内容,请按照格式添加:
{"C_Cpp.default.compilerPath":"E:\\mingw_bulids\\mingw64\bin","C_Cpp.default.includePath": ["E:\\mingw_bulids\\mingw64\\include","D:\\Users\\polyspace\\verifier\\cxx\\include","E:\\mingw_bulids\\mingw64\\x86_64-w64-mingw32\\include"]
}
逐个解释:
C_Cpp.default.compilerPath:
- 指定了 C/C++ 编译器的路径,我使用的是 编译器路径如上。
C_Cpp.default.includePath:
- 指定了 C/C++ 编译器查找头文件的路径。
当然了,我的settings.json中还有其他配置项,配置编辑器的主题、字体、代码补全等。这都不重要了。
问题是你怎么知道你的编译器路径以及查找头文件的路径呢?
我是这样做的:直接在everything软件中搜索出现红色波浪线的头文件,比如unistd.h这个:
搜索结果如下:
我找到了当初安装它们的路径。
此时,右键该文件名称,“打开路径”。
然后你会发现,这些头文件安静地躺在这个路径下,请你将该路径复制,并添加在"C_Cpp.default.includePath":后面,值得注意的两个点:
第一:由于转义字符的存在,你需要在每个'\'后多写一个'\'。
第二:如果你的"C_Cpp.default.includePath"后面要写多个路径,请用 [ ]将它们包起来,每个之间用逗号分割,且每个路径用英文双引号引起来。
"C_Cpp.default.compilerPath"写面填什么与"C_Cpp.default.includePath"方法类似,不必多言。
现在,请你关闭这个全局的settings.json来到你的工作区下,打开如下文件:
你将看到如下文件,我先解释一下各项含义:
{"configurations": [{"name": "Win32","includePath": ["${workspaceFolder}/**","${default}","E:/mingw_bulids/mingw64/include/x86_64-linux-gnu"],"defines": ["_DEBUG","UNICODE","_UNICODE"],"compilerPath": "E:\\mingw_bulids\\mingw64\\bin\\g++.exe","cStandard": "c17","cppStandard": "gnu++17","intelliSenseMode": "windows-gcc-x64"}],"version": 4
}
各项含义:
- "compilerPath": "E:\\mingw_bulids\\mingw64\\bin\\g++.exe",指定了编译器的路径。
-
"cStandard": "c17",和 "cppStandard": "gnu++17"是C和C++的标准。
-
"includePath": ["${workspaceFolder}/**",]表示搜索当前工作区下的所有文件夹,一般用来包含自己写的.h头文件。
-
"${default}":表示使用编译器默认的包含路径。他就是include全局settings.json里头文件的路径的。大部分读者可能都没有添加这个路径。
-
"E:/mingw_bulids/mingw64/include/x86_64-linux-gnu":这个是我要使用的一些Linux下头文件的路径。(读者们可能不需要这个,你们完全可以拷贝到全局settings.json文件中我们include的path下面去,这里只需要添加"${default}"就行了)。
总而言之,读者们可能需要改动或者添加的如下:
具体根据自己情况即可。另外你们如果是初次配置,可能会找不到.vscode下的c_cpp_properties,请参考其他回答,这个我不再赘述。
行文至此,相信读者问题应该得到了解决。
3.我的解决方法VS2019:
点击项目,再点击属性。
将上文我们在电脑中共找到的路径添加在“附加包含目录”中,并用英文分号结尾。点击确定。
参考链接:链接 链接