-I dir vs. -isystem dir

hel*_*hod 19 c gcc

如果我想要包含要搜索头文件的目录,这是首选的方式,为什么?

Lau*_*nis 23

查看此方法的一种方法是使用您控制的标头-I和不使用的标头(系统,第三方库)-isystem.当启用警告时,实际的区别在于来自-isystem标题的警告将被抑制.


Jus*_*ier 8

-Igcc文档:

将目录dir添加到要搜索头文件的目录列表的头部.这可以用于覆盖系统头文件,替换您自己的版本,因为在系统头文件目录之前搜索这些目录.但是,您不应使用此选项添加包含供应商提供的系统头文件的目录(使用--isystem).如果使用多个-I选项,则按从左到右的顺序扫描目录; 标准系统目录之后.

如果标准系统包含目录或使用-isystem指定的目录,也使用-I指定,则将忽略-I选项.该目录仍将被搜索,但作为系统目录在系统中的正常位置包括链.这是为了确保GCC修复错误系统头的过程和include_next指令的顺序不会被无意中更改.如果确实需要更改系统目录的搜索顺序,请使用-nostdinc和/或-isystem选项.

因此-I,除了特殊情况(例如供应商提供的系统头文件)之外,可能是指定头文件位置的首选选项.