C 预处理器包含和路径



假设我们有一个.cpp文件A包含一个.h文件B其中包括一个.h文件C

// File A.cpp
#include "B.h"
...
// File B.h
#include "../../utilityies/C.h"
...

如果B包含使用相对路径的C,则该相对路径是相对于B的位置解析还是相对于A的位置解析,这是B将被复制粘贴到的.cpp

包含路径相对于包含它的文件,因此在您的情况下相对于 B 的位置。

来自 gcc 文档:

GCC 首先 #include 在 包含当前文件的目录,然后在目录中作为 由 -iquote 选项指定,然后在相同的位置它会有 查找带有尖括号的请求标题。例如,如果 /usr/include/sys/stat.h 包含 #include "types.h",GCC 查找 type.h 首先在/usr/include/sys 中,然后在其通常的搜索路径中。

最新更新