VSCode中路径错误的#include为何无报错且编译正常?
为什么两种头文件引入写法都能正常编译?
出现这种情况主要有这几个原因:
编译器的额外头文件搜索路径:你的项目编译配置(比如CMakeLists.txt、Makefile或者VSCode的任务配置)里,可能已经把
abc.h实际所在的目录添加到了编译器的头文件搜索列表中。编译器处理#include时,会先尝试查找相对路径,找不到就自动去这些预设的搜索路径里匹配,所以哪怕你写的相对路径不对,也能定位到正确的头文件。VSCode IntelliSense的配置逻辑:VSCode的C/C++插件依赖
c_cpp_properties.json里的includePath配置,如果这个配置里包含了abc.h的实际路径,IntelliSense就会判定头文件存在,不会报红提示错误。这和实际编译的搜索路径是两套独立体系,但刚好你的配置覆盖了正确路径,所以编辑器和编译环节都没出问题。系统或全局的头文件路径:如果你的系统环境变量
INCLUDE(Windows)或者CPATH(Linux/macOS)里包含了abc.h所在的目录,编译器会默认去这些全局路径搜索,自然能找到目标文件。项目中存在同名头文件:检查下项目其他目录里有没有同名的
abc.h,如果有,编译器可能优先找到了这个同名文件,导致你误以为是原本的目标文件在起作用。
内容的提问来源于stack exchange,提问作者user3443063
相关产品推荐
相关产品推荐

