毕业论文
您现在的位置: 模具设计 >> 模具设计介绍 >> 正文 >> 正文

C语言模块程序设计,如何使用头文件划分模

来源:模具设计 时间:2023/11/18
北京那个医院治疗白癜风最好 http://disease.39.net/bjzkbdfyy/230420/13564219.html
1程序模块化

我们学习了函数的定义和使用,就会提出一个疑问:函数的作用是什么?

从我们学习C语言的第一个程序开始,就接触了main函数的定义,程序的所有功能都在main函数中实现。但是,我们的程序功能还是很简单,只是一些C语言基础知识的演示和讲解,代码量最多就是30行左右。

但是,当我们涉及到“项目”的时候,一个项目由多个功能模块组成,实现所有功能模块的代码可能需要几千行甚至上万行,那么,我们不可能把所有的功能模块都放在main函数中实现。所以,我们需要对项目的功能模块进行划分,不同的功能模块使用不同的函数来实现。

如果所有的功能模块都划分成规范的函数来设计,上万行的代码就由几百个函数来实现。我们要是把这上万行的代码都放在一个.c源文件中定义,那么,在浏览代码和查找代码的时候,也不是很方便。

为了解决这个问题,C语言提供了多个.c源文件和.h头文件来规划存放代码。我们可以把程序功能模块分解开,不同的功能模块使用不同的函数来实现,然后,存放到不同的源文件中。

例如,一个图书馆管理系统,会涉及到图书管理,读者管理,管理员管理这三个功能模块。那么,我们可以使用book.c和book.h文件来存放图书功能模块的代码,reader.c和reader.h文件来存放读者功能模块的代码,manager.c和manager.h文件来存放管理员功能模块的代码。那么,当我们想修改读者功能模块的代码时,就到reader.c和reader.h文件中查找和修改即可,对其他功能模块的代码没有任何改动。

最终,程序的功能模块之间耦合度降低,扩展性增强。当我们想增加或者删减某个功能的时候,只需要对程序做一点改动就可以,提高工作效率。

2头文件的使用

C语言提供了两种文件来存放代码:以.c后缀结尾的文件,称为:源文件;以.h后缀结尾的文件,称为:头文件;例如,我们可以创建test.c源文件,用来存放main函数的定义;创建test.h头文件,存放提供对外引用的接口函数或数据声明,例如声明接口函数,让引用.h头文件的模块可以使用该函数。

头文件引用的格式如下:

格式1:#includexxx.h

格式2:#include"xxx.h"

第一种格式,头文件存放在一对尖括号内,表示引用系统提供的头文件,例如,stdio.h、stdlib.h头文件,是系统提供的头文件,所以,引用时,使用尖括号包含。

第二种格式,头文件存放在一对双引号“”内,表示引用用户自定义的头文件。例如我们自己定义了一个test.h头文件,那么,就使用双引号包含。

这两种格式的区别,就是编译器在编译代码的时候,快速查找到需要引用的头文件。例如,遇到第一种格式引用的头文件,就去系统的/usr/include/等系统库目录下查找头文件。遇到第二种格式引用的头文件,就在源码当前目录,或者GCC编译器使用-I选项包含的目录下查找头文件。

头文件的作用很大,它可以声明函数;那么,引用头文件的地方,就可以使用该函数。例如有一个源文件,定义了几百个函数,那么,可以定义一个头文件,对这些函数进行声明。其他源码文件包含引用该头文件之后,就可要使用这几百个函数。不用在每一个使用函数的源码文件中都对几百个函数进行声明。

例如,当我们开发静态库或动态库给其他模块使用时,就离不开.h头文件的使用。我们只需要把源码编译成一个库文件,然后,把对外提供的接口在.h头文件中声明即可。

3gcc编译引用头文件

GCC编译器提供了-I选项(字母I就是include单词的首字母大写)用来指定头文件所在的目录。那么,GCC编译器在编译代码时,解析到需要引用头文件时,就去-I选项指定的目录下查找。下面我们来举例讲解怎么样定义和使用自己创建的头文件。

首先,我们在源码的当前目录下创建test.h文件,文件是以.h后缀结尾,表示一个头文件。test.h头文件的内容如下:

然后,在test.c源文件的代码如下:

其中的代码部分:

#include"test.h"//引用用户自定义头文件

此时,通过#include关键字,引用了用户自定义的头文件。那么,gcc编译如下:

gcctest.c-oexe

注意:test.h头文件与test.c在同一个目录下,所以,gcc在编译test.c的时候,在当前目录下查找test.h头文件。找到该头文件,然后,引用test.h头文件中定义的NUM宏。

程序运行结果如下

可以看到,我们在test.c源文件中,引用了test.h头文件中定义的NUM宏。

转载请注明:http://www.0431gb208.com/sjszlfa/6514.html