C预处理器包括和路径

时间:2015-04-16 08:55:02

标签: c++ header include c-preprocessor

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

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

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

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

1 个答案:

答案 0 :(得分:4)

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

来自gcc docs

  

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