黑马程序员——多文件(模块化)开发C程序的方法

———-android培训、Java培训、iOS培训,期待与您交流———-

模块化编程,就是多文件编程。把不同功能的函数封装到不同的文件中。一个.c文件和一个.h文件被称为一个模块。

开发C程序时,稍微大型的项目就需要使用多文件开发(模块化编程)。当代码量较大功能较复杂时,单一文件程序会使得文件非常巨大,代码量非常大,成千上万行的代码在一个文件中不便于修改和维护,因此需要将不同的功能模块放在不同的文件中。

在团队合作开发时,也需要多文件开发。各个功能模块分成多个文件同时编辑,可以有效的提高团队开发的分工协作效率。

这里写图片描述

以模块化方式开发

例如,当需要开发一个有两个函数(function1和function2)的C程序时,传统的做法是在main.c中分别编写main函数、function1函数和function2函数,在main函数之前或开始部分声明两个功能函数,并调用。

而如果以模块化对方式开发,则过程如下:
1. 创建两个.c文件,function1.c和function2.c
2. 分别在两个.c文件内定义需要的函数
3. 创建两个.h文件,文件名要与两个.c文件一致,即function1.h和function2.h
4. 在两个.h文件中分别包含各自所需的库文件,声明在.c中定义的函数
5. 在main.c文件中包含两个.h文件,在main函数中直接调用两个自定义函数

流程见上图

具体案例

开发一个计算器,输入两个数,打印这两个数的加、减、乘、除的结果。

一、文件结构

这里写图片描述
其中,inputNum.c定义输入数字,Caculator.c定义运算函数,myDisplay.c定义输出打印。

二、具体代码

main.c

#include <stdio.h>
#include "myDisplay.h"
#include "inputNum.h"
int main(int argc, const char * argv[]) {
    int a,b;
    a=inputNum();//第一个输入数存入a
    b=inputNum2();//第二个输入数存入b
    disp_resualt(a, b);//显示运算结果
    return 0;
}

inputNum.c

#include <stdio.h>
#include "inputNum.h"
//输入第一个数字
int inputNum(){
    int a;
    printf("请输入第一个数字:\n");
    scanf("%d",&a);
    return a;
}
//输入第二个数字
int inputNum2(){
    int a;
    printf("请输入第二个数字:\n");
    scanf("%d",&a);
    return a;
}

inputNum.h

#ifndef __test__inputNum__
#define __test__inputNum__

#include <stdio.h>
int inputNum();
int inputNum2();
#endif /* defined(__test__inputNum__) */

Caculator.c

int sum(int x,int y){
    return x+y;
}

int remain(int x,int y){
    return x-y;
}

int prod(int x,int y){
    return x*y;
}

float quo(int x,int y){
    return x/(float)y;
}

Caculator.h

#ifndef test_Caculator_h
#define test_Caculator_h
//函数声明
int sum(int x,int y);
int remain(int x,int y);
int prod(int x,int y);
float quo(int x,int y);

#endif

myDisplay.c

#include "myDisplay.h"
#include "Caculator.h"

//显示计算结果
void disp_resualt(int x,int y){
    int s = sum(x, y);
    printf("%d+%d=%d\n",x,y,s);
    s=remain(x, y);
    printf("%d-%d=%d\n",x,y,s);
    s=prod(x, y);
    printf("%d*%d=%d\n",x,y,s);
    float t=quo(x, y);
    printf("%d/%d=%.2f\n",x,y,t);

}

myDisplay.h

#ifndef __test__myDIsplay__
#define __test__myDIsplay__

#include <stdio.h>
void disp_resualt(int x,int y);
#endif /* defined(__test__myDIsplay__) */
  • 11
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值