.

NJS66丨浅谈C语言,模块化编程

这是老牛经济学的第篇原创文章

大家好,我是老牛。

一头想让亲们慢慢有钱有趣的牛。

专注职业教育教研设备+自媒体链接+智慧投资。

一定要努力,才能和最好的人相遇。

学技术,重在日拱一卒、一点一滴的积累。

今天一起来分析C语言,模块化编程。

模块化设计优势

1、模块化设计的优势

谈及到模块化编程,必然会涉及到多文件编译,也就是工程编译。在这样的一个系统中,往往会有多个C文件,而且每个C文件的作用不尽相同。在我们的C文件中,由于需要对外提供接口,因此必须有一些函数或者是变量提供给外部其它文件进行调用。

假设我们有一个initlcd_h文件,其提供最基本的LCD的驱动函数:

Draw_Text_8_16(U2x,U2y,U2color,U2backColor,constunsignedchar*chs);

//绘制大小为16×8,16x16的字符串;

而在我们的另外一个文件中需要调用此函数,那么我们该如何做呢?

头文件的作用正是在此。可以称其为一份接口描述文件。其文件内部不应该包含任何实质性的函数代码。我们可以把这个头文件理解成为一份说明书,说明的内容就是我们的模块对外提供的接口函数或者是接口变量。同时该文件也包含了一些很重要的宏定义以及一些结构体的信息,离开了这些信息,很可能就无法正常使用接口函数或者是接口变量。但是总的原则是:不该让外界知道的信息就不应该出现在头文件里,而外界调用模块内接口函数或者是接口变量所必须的信息就一定要出现在头文件里,否则,外界就无法正确的调用我们提供的接口功能。因而为了让外部函数或者文件调用我们提供的接口功能,就必须包含我们提供的这个接口描述文件----即头文件。同时,我们自身模块也需要包含这份模块头文件(因为其包含了模块源文件中所需要的宏定义或者是结构体),好

比我们平常所用的文件都是一式三份一样,模块本身也需要包含这个头文件。

2、模块化设计的步骤

2.1、建立两份文件建立两份文件分别命名:一份命名为initlcd.h,一份命名为initlcd.c如下图:2.2、编写c文件实体函数实体函数全部在c文件里面编写。如下图,其他定义文件全部放在h文件里面2.、编写h文件由于头文件可以被多模块引用,因此通常不能将具体变量或函数的实体放入到头文件中定义。否则,若被多模块引用后,便会出现重复定义的问题。另外,由于语法上不限制在同一模块中多处引用同一头文件,因此必须在头文件中加入相关条件编译来防止重复引用。一般而言,头文件中通常放置的是各种变量类型或函数原型的定义。由于相关定义可以是全局的或局部于某一模块的,因此一般采用树状结构组织相关的头文件。全局头文件处在树根处,然后按模块关系逐级构建相关自树,最终“树叶”作为具体相关模块的头文件。树的母子关系体现在头文件间的嵌入引用关系(母嵌入在子中)。自定义头文件:开头:#ifndefinitlcd_h#defineinitlcd_h结尾:#endif在自定义头文件中添加内容:定义对应模块化文件里面用到的变量、函数。如果该模块里面的函数被其他文件调用,必须在自定义头文件里面声明。那么这些文件全部添加到.h文件里面。2.4、在工程中添加c文件用户建立的文件必须添加到工程里面,这样这个文件才能被其他文件调用。

其他用户文件调用该c文件中的函数的时候要把对应的头文件添加进去。

2.5、工程文件的管理

到前一个步骤,模块化设计就完成了。但是在实际开发项目的时候,工程文件一般比较大,c文件也会很多。如果c文件和h文件散落在工程文件夹中,这样的话工程文件夹就会显得很凌乱。因此为了工程文件的方便管理,用户都会在工程文件夹里面新建其他文件夹来存放C和H文件。这时候问题就出来了,很多工程师在工程中在添加了C文件之后,编译并不能通过。这是因为没有添加文件路径。

下图是一个较好的文件管理实例。

如果c和h文件不是放在工程的根目录中,这时候就要添加路径了;

点击上图中的魔术棒。之后点击选项框中的C/C++设置选项。具体如下图。

注意:ARM的工程需要添加启动代码,启动代码是汇编文件,工程师在添加了c文件路径之后还需要添加汇编文件的路径。添加方法类似。具体方法如下图:

模块化程序设计总结

1、模块化程序设计即模块化设计;

2、简单地说就是程序的编写不是开始就逐条录入计算机语句和指令,而是首先用主程序、子程序、子过程等框架把软件的主要结构和流程描述出来,并定义和调试好各个框架之间的输入、输出链接关系。逐步求精的结果是得到一系列以功能块为单位的算法描述。

、以功能块为单位进行程序设计,实现其求解算法的方法称为模块化。

4、模块化的目的是为了降低程序复杂度,使程序设计、调试和维护等操作简单化。

学嵌入式、工业物联网、人工智能、鸿蒙操作系统,请扫描下方


转载请注明:http://www.abachildren.com/xgyy/1060.html