这里的一些好的答案引用了C标准,但忘记了POSIX标准,特别是c99(例如C编译器)命令的特定行为。根据The Open Group Base Specifications Issue 7,-I 目录在查找常用位置之前,更改搜索名称不是绝对路径名的标头的算法,以查找目录路径名所指定的目录。因此,名称以双引号(“”)括起来的标题应首先在#include行的文件目录中搜索,然后在-I选项中命名的目录中搜索,最后在通常的位置搜索。对于名称用尖括号(“<>”)括起来的标题,只能在-I选项中指定的目录中搜索标题,然后在通常的位置搜索标题。在-I选项中命名的目录应按指定的顺序进行搜索。c99命令调用。因此,在符合POSIX标准的环境中,使用符合POSIX标准的C编译器,#include "file.h"可能会首先搜索./file.h,其中.是带有#include语句的文件所在的目录,同时#include <file.h>,可能/usr/include/file.h首先搜索,/usr/include系统定义在哪里通常的标题位置(似乎没有POSIX定义)。