本文从Simulink生成的代码出发,研究C语言中头文件的作用。
1 头文件的作用
博主理解,头文件的作用可以归纳为一句话,那就是把各个C文件联系起来。
至于是怎么联系起来的,后文在分析Simulink生成的代码中会一点点研究。
2 C文件中引用头文件随便用Simulink模型生成代码,都能看到生成了一堆.c文件和.h文件。
首先点开demo.c,也就是和Simulink模型名相同的C文件。这个C文件对应模型中的控制算法。
除了顶头的注释以外,c文件一上来就引用了两个头文件。
刚开始干这一行的时候,博主对这里的语法很懵逼。为啥#include后面的头文件用的是双引号。
记得大学学的时候用的是书名号,如下:
第二种引用方式#include <demo.h>其实还是基础不扎实。网上随便差点资料就知道,引用用户自己写的的头文件的时候采用第一种双引号的方式,引用系统中标准头文件的时候采用第二种书名号的方式。
3 头文件的内容打开和模型名相同的头文件demo.h,研究一下为什么通过头文件,就能让各个C文件之间互相访问内容。
其实,奥妙就在头文件中的extern关键字上面,如下图所示。
extern从字面上理解,是“外部”的意思。由它修饰的变量是全局变量。只要其他C文件最上面写了#include “demo.h”,编译器就会知道了解到,那些用了extern修饰的变量是外部定义的。等到所有C文件都编译过以后,会在链接的过程中找到这些变量真正的源头,并将其关联起来。
所以,如果想要调用其他C文件里面定义的全局变量,只要include它的头文件即可。extern修饰的函数也是一样的道理。底层软件中的操作系统想要调度应用层的函数,也只要include它的头文件即可。
在Simulink中,可以通过定义Storage Class很容易地配置这些全局变量生成的方式。详见博主的另一篇博客Simulink代码生成: Storage Class配置。
4 总结C语言头文件的功能其实不止于此,后续博客会在本片的基础背景下,研究一些其他的技术知识。
>>返回个人博客总目录