网站首页 > 技术文章 正文
若文章对您有帮助,欢迎关注 程序员小迷 。助您在编程路上越走越好!
头文件搜索顺序规则
以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等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。
猜你喜欢
- 2025-05-10 热学和湿度超稳定的一维钙钛矿(钙钛矿eqe)
- 2025-05-10 C#上位机基于SMTP实现邮件报警通知
- 2025-05-10 Android平台上最好的几款免费的代码编辑器
- 2025-05-10 CPU缓存一致性:从理论到实战(cpu和缓存)
- 2025-05-10 .NET 7 AOT 的使用以及 .NET 与 Go 互相调用
- 2025-05-10 Linux系列:如何用 C#调用 C方法造成内存泄露
- 2025-05-10 测评丨RK3399+RK1808人工智能计算棒(主动模式和被动模式)
- 2025-05-10 C语言简介(c语言编程介绍)
- 2025-05-10 海康工业相机SDK开发介绍(海康 工业相机)
- 2025-05-10 链接mono静态库,执行c#程序(mockito 静态类)
- 05-11官方资源!多所知名高校课程,这个平台免费开放→
- 05-11说好的免费课程学剪辑 怎么会“花”掉10万?
- 05-11免费公开!中小学国家课程教材电子版来了
- 05-11338所知名高校50万门课,全免费!赶紧收藏
- 05-11免费课程来了,快来解锁你的艺术“超能力”吧~
- 05-10热学和湿度超稳定的一维钙钛矿(钙钛矿eqe)
- 05-10C#上位机基于SMTP实现邮件报警通知
- 05-10Android平台上最好的几款免费的代码编辑器
- 最近发表
- 标签列表
-
- cmd/c (64)
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- js判断是否空对象 (63)
- pythoncase语句 (81)
- es6includes (73)
- sqlset (64)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- js数组插入 (83)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- outofmemoryerror是什么意思 (64)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)