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

来源:互联网 发布:js无法删除cookie 编辑:程序博客网 时间:2024/06/15 10:00

———-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__) */
0 0
原创粉丝点击