#include <file>是标准系统定义头文件,会在系统标准定义的位置(Standard system include directory),譬如/usr/include。
#include “file”是自定义头文件位置,包括当前目录,以及-iquote dir。
无论是"file"还是<file>,都会搜索-I, -isystem, -idirafter所定义的目录。
include目录搜索顺序是:
- 引号里面的内容,include代码所在文件的位置是最先搜索的
- -iquote指定的目录
- -I指定的目录
- -isystem指定的位置
- 标准系统include目录(譬如/usr/include)
- -idirafter的目录
如果有两个相同的定义,则是左边到右边的顺序。譬如
gcc -I Idir1 -iquote qdir1 -I Idir2....
若是#include “file.h”,则是iquote->Idir1->Idir2
若是#include <file.h>,则是Idir1->Idir2
另外,如果$SYSROOT或者--sysroot有定义的话,那么所有的目录前面都会加上$SYSROOT。
详细可参阅gcc.pdf,或者gcc官方网站: