优秀的编程知识分享平台

网站首页 > 技术文章 正文

头文件路径搜索顺序五花八门,有没有规律?

nanyue 2025-05-10 23:57:56 技术文章 4 ℃


若文章对您有帮助,欢迎关注 程序员小迷 。助您在编程路上越走越好!




头文件搜索顺序规则

以GCC为例,用户头文件""和系统头文件<>先后顺序规则如下:

  • “”
    • 被编译的源代码文件所在当前目录
    • -iquote指定的路径(只用于引号括起来头文件,如多个路径,从左到右依次搜索)
    • -I指定的路径(如多个路径,从左到右依次搜索)
    • -isystem指定的路径(如多个路径,从左到右依次搜索)
    • 标准系统头文件路径
    • -idirafter指定的路径(如多个路径,从左到右依次搜索)
  • <>
    • -I指定的路径(如多个路径,从左到右依次搜索)
    • -isystem指定的路径(如多个路径,从左到右依次搜索)
    • 标准系统头文件路径
    • -idirafter指定的路径(如多个路径,从左到右依次搜索)

我曾经写过测试代码,证明了如上规则的正确性。当然,使用man gcc搜索-iquote也可以找到规则。


覆盖系统头文件

  • 找到如上规则"标准系统头文件路径"所在的位置,在此之前的路径(或选项指定的路径)都有机会达到覆盖系统头文件的可能。即,手写一个stdio.h, 放在源代码所在的路径,#include "stdio.h"不会再找系统头文件。类似的,利用-I .指定当前目录为系统头文件路径,#include <stdio.h>也不会再找系统stdio.h.








若文章对您有帮助,欢迎关注 程序员小迷 。助您在编程路上越走越好!

微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是 程序员小迷 (致力于C、C++、C#、Android、iOS、Java、Kotlin、Objective-C、Swift、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

最近发表
标签列表