C语言模块化

🌞欢迎来到C语言的世界 
🌈博客主页:卿云阁

💌欢迎关注🎉点赞👍收藏⭐️留言📝

🌟本文由卿云阁原创!

🙏作者水平很有限,如果发现错误,请留言轰炸哦!万分感谢!


 使用头文件进行模块化编程

假设我们现在有这样一个项目

假设有甲、乙两人,同时开发一个软件,功能是输入两个整数,输出它们的加减乘除四种结果。

开发过程中,由甲负责主函数的编写和调用。

乙负责加、减、乘、除函数的代码编写。

丙负责乘、除函数的编写。

在实际工作中,这两个人有各自不同的工作空间和计算机,不方便同时编辑同一个源代码文件,最好是每个人在各自的工作环境下编写各自的源代码文件,最后能把他们编写的文件有效集中起来组成完成特定的程序。

(1)新建一个头文件

 

(2)项目结构如下:

使用头文件

    上面的例子是比较简单的应用,在应用函数时先声明(例如8.1节的实例,main函数中声明了三个函数),然后再在编程应用函数。然而,在实际项目中,有成百上千的函数要编写,且函数在不同开发人员之中应用,一旦利用别人的函数多了,自己的代码因为声明函数的代码显示非常臃肿,而且一个实际工程项目,一般需要给每个函数做注释,解释函数具有的功能、参数的意义和函数的用法等,这些工作在调用前用声明来做,不利于阅读程序代码,也不易于维护,为解决这样的问题,就产生了一种称为头文件的文本文件,用于声明和描述函数。之前我们用#include后跟一个.h文件,这个.h文件就是头文件,我们可以把函数的描述放在这个头文件中,然后在其它文件(如.c文件)中直接利用#include加头文件的方式进行调用。

jisuan.h

//定义加法
int add(int a, int b)

{

	return a + b;

}
//定义减法
int sub(int a, int b)

{

	return a - b;

}
//定义乘法
int mul(int a, int b)

{

	return a * b;

}
//定义除法
float div(int a, int b)

{

	return 1.0f * a / b;

}

这时main.c源文件就可以写成如下代码。

#include <stdio.h>
#define _CRT_SECURE_NO_WARNINGS
#include"jisuan.h"

int main(void)

{

int a,b;

printf("输入两个整数: ");

scanf("%d %d",&a,&b);//为节省篇幅,没考虑除数为0的情况。

printf("%d,%d两数加减乘除的结果是: ",a,b);

printf("%d,%d,%d,%f\n",add(a,b),sub(a,b),mul(a,b),div(a,b));

return 0;

 }

结果:

 

说明用#include加头文件的方式也可以实现相应的功能。

头文件中放入函数声明,函数的具体实现放在另外的.c文件中,也就是将声明和实现分离。这种开发模式,就是实际中经常用的模块化开发,也被人称为面向接口的开发。

在这种开发模式下,如果在开发之前,做好头文件内的内容,剩下的事就是按头文件去写代码,开发就变得有据可依了。开发完成后,编译源代码,头文件就是一份使用方法和函数功能的说明书,可以很方便的将.c文件和头文件提供给需要使用的用户。细心的读者可能已经发现了,包含自己的头文件时,用的是" ",而不是<>,这两者是有区别的,#include< > 引用的是编译器类库路径里面的头文件。#include " " 不仅可引用类库中的头文件,还可以引用程序目录的相对路径中的头文件,因为jisuan.h是与main.c是同一个目录,所以用" "。当然头文件可以绝对路径指定,如#include "E:\\wang\\jisuan.h"(windows系统),#include "home\\wang\\jisuna.h"(Linux系统),但通常不这样做,原因是当程序在新的环境中执行时,要在新的环境中专门建立相应的目录,并把头文件复制到这个目录中,非常麻烦。如果头文件是放在.c文件所在目录的子目录下,可以写成“#include "子目录\\jisuanFirst.h "”。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卿云阁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值