简约好看的网站,网页源代码模板,二维码网页制作免费网站制作,绵阳城乡住房建设厅网站前言 作者在刚开始学C语言的时候#xff0c;都是用的 去引用头文件#xff0c;但在学习STM32的时候发现#xff0c;程序中大量使用 去引用双引号。 那么二者有什么区别呢? 无论使用哪种方式#xff0c;头文件的目的都是为了引用你需要的文件供你编程使…前言 作者在刚开始学C语言的时候都是用的 去引用头文件但在学习STM32的时候发现程序中大量使用 去引用双引号。 那么二者有什么区别呢? 无论使用哪种方式头文件的目的都是为了引用你需要的文件供你编程使用那么这里就有一个很重要的问题程序怎么知道你的头文件在哪
#include xxx.h 当使用来包含头文件时编译器直接在系统的标准库路径中查找头文件不会在当前源文件所在目录中查找。这种方式主要用于标准库的头文件如stdio.h、stdlib.h等。 以DEV C为例点击工具-编译选项-目录可以看到这就是编译器的默认的系统标准库路径。 #include xxx.h 当使用双引号来包含头文件时编译器首先会在当前源文件所在的目录中查找指定的头文件。如果找不到编译器会按照系统设置的标准路径去查找。这种方式通常用于项目内部的头文件即用户自定义的头文件。 假设你的C语言文件(main.c)是在D盘的project文件夹中同时你自定义了一个头文件myheader.h放在C语言文件的同目录中的include文件夹中结构如图
D/
└──project/├── main.c└── include/└── myheader.h你需要引用myheader.h可以这样写
#include include/myheader.h 编译器从当前源文件所在目录既main.c所在目录开始寻找include文件夹下的myheader.h 和 主要区别
查询头文件的起始位置不一样从系统目录中查找从源文件目录中开始查找查询范围不一样只查系统目录查完源文件目录后如果没找到目标文件就会查一遍系统目录 和 的兼容问题 搜索路径查找头文件 我们知道的是 可以在里面写路径去查找源文件目录下的自定义头文件但很少人知道的是 也可以写入路径去查找系统目录下头文件但为什么不用呢 因为会将系统目录下的内容全部扫描一遍因此不需要写路径。 但在某些情况下也可以在尖括号中指定路径来引用头文件。这通常取决于编译器的实现和配置。 编译器支持某些编译器可能允许在尖括号中指定相对路径或绝对路径来引用头文件。然而这并不是标准做法且可能不具有可移植性。 项目配置在大型项目中可能会通过配置文件或编译选项来指定额外的头文件搜索路径。在这种情况下即使使用尖括号编译器也可能会在这些指定的路径中查找头文件。 示例假设有一个自定义头文件mycustomlib.h位于项目的include/custom目录下并且该目录已经被添加到编译器的包含路径中。那么可以使用尖括号来引用这个头文
#include custom/mycustomlib.h 【注意】这里最重要的是 搜索路径必须将目录添加到编译器包含的路径中才允许 查找系统库头文件 之前提到过 会先查源文件目录没找到头文件之后就会查系统库因此 是兼容 的功能的例如:
#include stdio.h 这是被允许的也可以找到这个头文件但相对 而言就会慢一点
总结 无论是哪种方式其根本目的还是为了找到相应的头文件常用于系统库头文件的引用常用于自定义头文件其本质区别在于搜索头文件的目录上。两者并非一成不变的可以根据使用者的习惯灵活使用。