当前位置:首页 > 技术文章 > 正文内容

C语言模块程序设计?源文件和头文件如何划分模块?linux C第32讲

douba323小时前技术文章3

6 .c源文件和.h头文件配合使用

假设我们开发一个图书馆管理系统,读者的信息使用reader.c和reader.h文件来管理,那么,读者在登记的时候,需要输入年龄,那么,可以设计如下的函数,接收登记读者的年龄输入:

int reader_age_add(int age);

此时,通过参数,把age变量表示的读者年龄存放到系统中。那么,我们可以在reader.c源文件中定义存放读者年龄的数组和操作数组的函数。源码如下:

然后,在reader.h头文件中,声明对外使用的接口函数和变量。头文件的内容如下:

那么,我们可以在test.c源文件中引用reader.h头文件,然后,使用头文件声明提供的接口函数和变量,完成对读者年龄的注册。代码如下:

程序运行结果如下:

可以看到,在test.c源文件中引用了reader.h头文件。那么,就可以使用reader.h头文件声明的接口函数和变量。

当其他模块要引用读者管理模块声明的接口函数、变量和定义的宏时,只需要包含 reader.h 头文件就可以了。

所以,我们在设计程序的过程中,尽量把程序进行功能模块划分,每个模块定义对应的.c和.h文件来封装模块的代码。

7 .h头文件避免重定义

C语言提供了.h头文件,可以在.h头文件中声明函数或定义宏等信息。假设test.h头文件,在该头文件中定义如下宏:

//定义一个宏

#define NUM 100

那么,有多个.c头文件都包含引用test.h头文件,此时,引起NUM宏的多重定义。为了避免这个文件,test.h头文件的内容应该如下:

#ifndef _TEST_H_ //if判断,如果没有定义 _TEST_H_宏,就执行下面的语句,与if一样;

#define _TEST_H_ //定义 _TEST_H_ 宏

//定义一个宏

#define NUM 100

#endif

此时,通过#ifndef来判断 _TEST_H_ 宏是否已经定义,如果还没有定义,就执行代码:

#define _TEST_H_

//定义一个宏

#define NUM 100

此时,定义 _TEST_H_ 宏,并定义 NUM 宏。

那么,当其他.c源文件包含 test.h头文件的时候,通过 #ifndef 判断 _TEST_H_ 宏已经定义,就不再执行代码:

#define _TEST_H_

//定义一个宏

#define NUM 100

此时,就不再进行多次定义 NUM 宏,从而保证 test.h头文件的代码只编译定义一次。避免了test.h头文件多重包含,导致test.h头文件中的数据重复定义。

8 总结

构建一个大型软件的时候,需要把软件的各个功能模块进行划分。那么,不同的功能模块就可以使用不同的文件来存放。便于代码的管理。

所以,重点了解和掌握.c源文件和.h头文件的搭配使用。当构建一个大型复杂软件的时候,就可以划分不同的功能模块,不同的功能模块使用不同的.c源文件和.h头文件进行封装。

软件设计的模块化程度越高,扩展性就越强。

读者要仔细分析,掌握好每一个知识点,然后,自己总结出对该知识点的理解。自己总结出来的知识,理解才深刻,才是自己掌握的知识。

相关文章

linux系统远程文件传输小技巧(linux远程传送文件的命令)

今天,盯着办公室的linux系统,忽然想到前两天有办公室同事要传文件,于是做了一下操作,针对linux系统,只需要一条命令操作就可以将我们的文件传到另一台同事的电脑上去。针对linux系统之间,比较...

Linux 中,查找文件指令用法解析(linux查找文件夹命令)

find 命令是 linux 系统中一种强大的搜索命令,用来在系统中精准定位到所需文件的位置,并可以提供各个参数方便筛选查找。用法find [起始路径] [选项] [表达式]起始路径:搜索的根目录选项...

如何查看linux后台运行的进程?如何查看后台运行进程的状态?

linux系统中挂在后台的进程,如何能够被运维人员知道呢?以及挂在后台的进程当前状态是怎样的?是否可以继续执行?如何杀死一个在后台挂起的进程?后台进程可以通过‘&’符号或nohup命令,让程序进入...

Linux 下如何查看进程的资源限制信息?

简介Linux 上的 cat /proc/$pid/limits 命令提供有关特定进程的资源限制的信息,其中 $pid 是相关进程的进程 ID (pid)。该文件是 `/proc 文件系统的一部分,该...

Linux 命令 ncftp(文件传输)——想玩转linux就请一直看下去

我是IT悟道,点击右上方“关注”,每天分享IT、科技、数码方面的干货。Linux ncftp命令Linux 命令大全Linux ncftp命令用于传输文件。FTP让用户得以下载存放于服务器主机的文件,...

filezilla,非常实用的ftp工具,远程Linux上传、下载和文件管理

今天给小伙伴们推荐一款非常好用的Linux远程工具,filezilla。在实际的开发过程中,时间就是项目的生命线,欲善其事,先利其器!如果你使用命令ftp上传、下载,加上远程登录、文件授权,烦不甚烦,...