众所周知,C/C++包含头文件时有如下两种方式:
1. #include <xx>
2. #include "xx"
1. #include <xx>
2. #include "xx"
这些头文件可能出现在如下的位置:
1. 系统头文件目录
/usr/local/include,
/usr/include,gcc的头文件目录等
2. 文件所在目录
3. 编译时,-I选项指定的目录
4. 编译时,-iquote选项指定的目录
5. 编译时,-I-选项指定的目录(不推荐使用)
在预编译时,这些头文件会被替换到包含的位置,
那么在上述可能出现位置的查找顺序如何呢?
1. #include <xx>
先查到 -I指定目录, 后查找系统头文件目录,不查找文件所在目录
(如果-I指定的目录包含在系统头文件目录中,-I指定的目录被忽略)
2. #include "xx"
2. #include "xx"
先查找文件所在的目录(如果该文件是被包含的,那么会一层层往回找包含它的文件所在的目录),
然后查找 -iquote指定目录,然后查找和1.一样的目录(先-I,后系统目录)。
参考资料: