单片机的模块化编程

来源:互联网 发布:江铠同翟天临分手知乎 编辑:程序博客网 时间:2024/04/19 14:14

当一个项目小组做一个相对比较复杂的工程时,就需要小组成员分工合作,一起完成项目,意味着不再是某人独自单干,而是要求小组成员各自负责一部分工程。比如你可能只是负责通讯或者显示某一块,这个时候,就应该将自己的这一块程序写成一个模块,单独调试,留出接口供其它模块调用。最后,小组成员都将自己负责的模块写完并调试无误后,由项目组长进行综合调试,像这些场合就要求程序必须模块化模块化的好处非常多,不仅仅是便于分工,它还有助于程序的调试,有利于程序结构的划分,还能增加程序的可读性和可移植性。

模块化编程的说明

说明一:模块即是一个.c和一个.h的结合,头文件(.h)是对该模块的声明。

说明二:某模块提供给其他模块调用的外部函数以及数据需在所对应的.h文件中冠以extern关键字来声明。

说明三:模块内的函数和变量需在.c文件开头处冠以static关键字声明。

说明四:永远不要在.h文件中定义变量。

先解释一下说明中的两个关键词:定义和声明。相信读者都是学过C语言的,本应该对这两个词理解的很透彻,可笔者在培训时发现,好多人都搞不清楚,都是凭着感觉写的,高兴了就用定义,不高兴了就用声明,这样做当然是不对的,换句话说是错的。

强势X入广告:什么是定义和声明?

所谓的定义就是(编译器)创建一个对象,为这个对象分配一块内存并给它取上一个名字,这个名字就是我们经常所说的变量名或者对象名。但注意,这个名字一旦和这块内存匹配起来(可以想象是这个名字嫁给了这块空间,没有要彩礼啊),它们就同生共死,终生不离不弃,并且这块内存的位置也不能被改变。一个变量或对象在一定的区域内(比如函数内)只能被定义一次,如果定义多次,编译器会提示你重复定义同一个变量或对象。

什么是声明?声明确切的说应该有两重含义:

(1)告诉编译器,这个名字已经匹配到一块内存上了(伊人已嫁,吾将何去何从?何以解忧,唯有稀粥),下面的代码用到变量或对象是在别的地方定义的。声明可以出现多次。

(2)告诉编译器,我这个名字我先预定了,别的地方再也不能用它来作为变量名或对象名。比如你在图书馆自习室的某个座位上放了一本书,表明这个座位已经有人预订,别人再也不允许使用这个座位。其实这个时候你本人并没有坐在这个座位上。这种声明最典型的例子就是函数参数的声明,例如:void fun(int i, char c)。

那他们的区别也很清晰了。记住,定义声明最重要的区别:定义创建了对象并为这个对象分配了内存,声明没有分配内存(一个抱伊人,一个喝稀粥,^_^)。

0 0