预处理器搜索头文件的方法:
首先在包含它的头文件所在的目录搜索,比如/usr/include/sys/stat.h 包含 #include "types.h", GCC首先在/usr/include/sys目录寻找types.h。
然后在双引号search path寻找。找不到,再到尖括号search path寻找。
在标准系统目录寻找。
预处理命令加上-v选项:
cpp -v /dev/null -o /dev/null
#include "..." search starts here:
#include <...> search starts here:
/usr/lib/gcc/x86_64-linux-gnu/9/include
/usr/local/include
/usr/include/x86_64-linux-gnu
/usr/include
End of search list.
-I dir选项,使dir在current directory之后,标准系统目录之前被搜索。
-iquote dir,添加双引号搜索目录
-isystem,添加系统搜索目录
-nostdc,不搜索系统标准目录。
C_INCLUDE_PATH环境变量。
参考
https://gcc.gnu.org/onlinedocs/cpp/Search-Path.html
https://gcc.gnu.org/onlinedocs/cpp/Environment-Variables.html