关于C语言头文件引用的基础及进阶知识(个人理解)

本文介绍了在C/C++编程中使用尖括号与双引号包含头文件的区别,以及如何正确地将自定义函数放入头文件。强调了使用双引号引入自定义头文件的惯例,并解释了如何通过#ifndef宏防止头文件重复包含。此外,讨论了嵌套包含的潜在问题和减少其使用的建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、< >与“ ”的区别?

使用尖括号< >,编译器会到系统路径下查找头文件;
而使用双引号" ",编译器首先在当前目录下查找头文件,如果没有找到,再到系统路径下查找。

所以:使用双引号比使用尖括号多了一个查找路径,它的功能更为强大。

而我们自己编写的头文件,一般存放于当前项目的路径下,
所以不能使用尖括号,只能使用双引号。(或者你把头文件放到系统路径中,但这样比较麻烦)

好的编程习惯是:
我个人的习惯是使用尖括号来引入标准头文件
使用双引号来引入自定义头文件(自己编写的头文件),这样一眼就能看出头文件的区别。

这里大家可以深入了解系统路径是什么情况。

二、如何将自己写的函数放到头文件中?

重点来了 怎么include自己写的函数
如果我有三个文件 main.c my.h my.c
①My.c 里面定义函数
②my.h里面写函数声明
③Main.c里面写 #include 即可

这样来看,这种做法的最大好处就是main.c这个文件看起来比较简洁,因为相比在main.c里面定义函数的唯一区别就是定义和声明都在另外的文件中。

以上只是基本用法

三、关于引用头文件的进阶用法

进阶用法: 杂七杂八看了很多网站 我自己总结:(可能有不对欢迎指出~)

1.可以嵌套包含 就是a.h 里面写 #include “b.h”

为什么写程序时要用嵌套包含 俺暂时未了解
其实嵌套包含是一种不太好的事情 会造成编译逻辑混乱 降低效率
尤其可能导致重复包含 还要额外设置防重复包含的头文件写法等 所以尽量减少嵌套包含
这里重复包含具体是指:a.h文件中#include"c.h"
而b.h文件中也#include"c.h"
这样表面上看不出来,但实际上造成了重复包含的问题

2.如何防止重复包含 重复包含同一个头文件会降低编译效率

在头文件中这样写:(假设头文件名字为my.h)
#ifndef MY_H
#define MY_H
…声明内容
#endif

这种方法的本质就是加一个 标记 作区分
注意:

①这里的MY_H视为符号,只有区分作用,一般取名时要和头文件名一致且大写,以免其他头文件取名时重复,包含这个头文件时写法依然是#include”my.h”。如果其他头文件也用MY_H,在include时这个头文件在my.h之后写,那么这个头文件就包含失败。

②这种写法虽然可以减小重复包含的坏影响 但也会降低编译速度
所以最好就不要重复包含

但是为什么相比重复包含要好一点呢?
因为重复引用 引用的头文件里面有时声明好多行 浪费很多时间
而这种写法才几行 对吧?

3.小注意点

注意 依然以main.c my.c my.h为例
在my.c里面定义函数时也可能会include很多头文件
这些头文件在my.h里面不需要表示

四、小白の疑惑

当时接到项目时发现头文件这块我完全不会才补了一点知识,
但是有没有大佬告诉我为什么现成的代码里会有嵌套包含这种现象存在?
求解~

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晨风默语

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值