黑马程序员——多文件(模块化)开发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__) */
- 黑马程序员——多文件(模块化)开发C程序的方法
- 设计高模块化C程序的方法
- 设计高模块化C程序的方法
- C语言模块化开发(多文件编程)
- 黑马程序员——C语言函数及多文件团队开发
- 黑马程序员——C语言笔记之预处理指令和模块化编程
- 黑马程序员——IO流的复制文件方法(含缓冲区方法)
- 9、黑马程序员-C语言inclue和多文件开发
- 微信小程序 —— 模块化方法的总结
- 黑马程序员----多文件开发
- 黑马程序员——OC基础---开发技巧(多文件开发,xcode功能演示)
- 微信小程序开发实战——模块化
- android 程序开发的插件化 模块化方法 之一
- android 程序开发的插件化 模块化方法
- android 程序开发的插件化 模块化方法 之一
- android 程序开发的插件化 模块化方法 之二
- android 程序开发的插件化 模块化方法 之一
- android 程序开发的插件化 模块化方法之一
- 2015062005 - 床畔(1)
- 雾里探花之计算机硬件及组成原理(前言)
- django1.7写一个MOOC管理系统(二:数据库设计)(2015.6.20)
- innodb_data_file_path
- php面向对象基础概念(多态)
- 黑马程序员——多文件(模块化)开发C程序的方法
- hdoj5273最大逆序对
- javascript学习笔记(一)--初识javascript
- Fisher vector学习笔记
- 旋转和缩放视图
- 编译Ogre1.8.1 for vs2010
- java基础—计算: 2012-3-17"到"2012-4-6"中间有多少天?
- 【BC#24 1002 HDOJ 5273】Dylans loves sequence
- 15HD_OJ——Max Sun