对于C语言的.h文件的理解——函数声明
之前学到主调函数写在被调函数前,若想调用则需先在主调函数前进行声明。今天对嵌入式小车的代码进行编写时对于这一点有了新的理解。
由于在路线中需要大量使用 循迹+前进 组合语句,所以今天编写了一个简单函数“循迹+前进450”来将两个动作整合到一起,函数体中调用了循迹函数与前进函数。写完之后进行编译,我发现虽然在主调函数之前没有声明被调函数,但是却没有报错(如下图)。
于是我进行了百度(如下图,文末附文章链接),发现drive.h文件好像是有函数声明的作用。
于是我打开drive.h文件(如下)
对照函数声明语句的格式(如下):
发现二者格式竟然是一样的,那么大概这就是函数声明语句了。为了验证这一想法,我将drive.h中的声明语句全部注释(如下图)
然后进行了编译,确实这次报错了——2个ERROR并给出了报错原因,大概意思就是说我没有进行声明(因为我只调用了循迹函数和前进函数,所以会报2个错)。
为了进一步验证是由于我没有声明而报的错,我在主调函数之前对两个被调函数进行了声明,编译后没有报错(如下图)
于是,我就验证了drive.h确实是起到声明函数的作用,其实明白了这一点后就不难理解:由于编译器是对每条语句按顺序逐条编译的,我们在头文件中已经写上#include "drive.h",那么编译器在对drive.c文件进行编译时,当编译到#include "drive.h"这一条语句时,就会跳转到drive.h内部对其中的语句进行编译,这样就认识了drive.h中声明的函数,所以就不需要在drive.c中进行声明。
回到百度中的文章,这位博主有提到在头文件中不但能声明,还可以定义,且与函数声明一样,在头文件中定义与在源文件中定义作用相同。由于时间关系先不进行验证,随后更新,大家可以参考下面两篇文章,有关于函数声明和定义的更详细介绍。
参考文章:
1.c语言中的.h文件的作用,在源文件(.c)和头文件(.h)中声明和定义的区别
https://blog.csdn.net/weixin_39735288/article/details/116993267
2.C语言函数的定义和声明
https://blog.csdn.net/xingzhe22222/article/details/98870457?utm_source=po_vip(相关知识点部分截图如下)
- 点赞
- 收藏
- 关注作者
评论(0)