以往写C语言程序都是一个文件里面写个几十、几百行,在练算法的时候还可以,现在搞开发需要模块化编程,所谓模块化编程,就是指一个程序包含多个源文件(.c 文件和 .h 文件),每个 .c 文件可以被称为一个模块。
1、例程的文件结构

2、各文件代码
main.c 源码:

#include <stdio.h>
#include "include/func.h"
int main()
{int n1 = 1, n2 = 10;printf("从%d加到%d的和为%ld\n", n1, n2, sum(n1, n2));printf("从%d乘到%d的积为%ld\n", n1, n2, mult(n1, n2));printf("OS:%s\n",OS);printf("Power By %s(%s)", getWebName(), getWebURL());return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

math.c 源码:

// 没有使用到 func.h 中的函数声明或宏定义,也可以不包含进来
#include "../include/func.h"
// 从 fromNum 加到 endNum
long sum(int fromNum, int endNum)
{int i;long result = 0;
// 参数不符合规则,返回 -1if(fromNum<0 || endNum<0 || endNum<fromNum){return -1;}for(i=fromNum; i<=endNum; i++){result += i;}
// 返回大于等于0的值return result;
}
// 从 fromNum 乘到 endNum
long mult(int fromNum, int endNum)
{int i;long result = 1;
// 参数不符合规则,返回 -1if(fromNum<0 || endNum<0 || endNum<fromNum){return -1;}for(i=fromNum; i<=endNum; i++){result *= i;}
// 返回大于等于0的值return result;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

web.c 源码:

// 使用到了 func.h 中的宏定义,必须包含进来,否则编译错误
#include "../include/func.h"
char* getWebName()
{return WEB_NAME;
}
char* getWebURL()
{return WEB_URL;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

func.h 源码:

#ifndef _FUNC_H
#define _FUNC_H
// 用宏定义来代替全局变量
#define OS "Linux"
#define WEB_URL "http://www.baidu.com"
#define WEB_NAME "百度"
// 也可以省略 extern,不过为了程序可读性,建议都写上
extern long sum(int, int);
extern long mult(int, int);
extern char* getWebName();
extern char* getWebURL();
#endif
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

运行结果:
从1加到10的和为55
从1乘到10的积为3628800
OS:Linux
Power By 百度(http://www.baidu.com)

C语言模块化编程的例子相关推荐

  1. C语言模块化编程样例

    模块化编程向来不是面向对象语言的专利,即使是C语言,为了降低文件.模块间的耦合度,依然要注意对变量.函数进行封装. 以下举例对C语言模块化编程进行浅析:项目中包含a.c和b.c文件,其中a.c中定义了 ...

  2. keil c语言模块化编程,keil C模块化编程总结

    昨晚看了下模块化编程的东西,把自己的工程整了整,可惜没成功.今早发神经似的起床敲代码,很快就发现了错误,原来是条件宏定义的头文件名忘改了,汗!!! 整理下模块化编程的要点,感谢以下三位UP主的帖子: ...

  3. 单片机c语言模块化实例程序设计,单片机C语言模块化编程方法

    当你在一个项目小组做一个相对较复杂的工程时,意味着你不再独自单干.你需要和你的小组成员分工合作,一起完成项目,这就要求小组成员各自负责一部分工程.比如你可能只是负责通讯或者显示这一块.这个时候,你就应 ...

  4. c语言模块化编程extern的用法,关于模块化编程extern用法

    单片机模块化 用C语言编写程序的时候,我们经常会遇到这样一种情况:希望在头文件中定义一个全局变量,然后包含到两个不同的c文件中,希望这个全局变量能在两个文件中共用. 举例说明:项目文件夹project ...

  5. C语言模块化编程中的头文件

    .c和.h文件都是源文件,除了后缀不一样便于区分外和管理外,其他的都是相同的,在.c中编写的代码同样也可以写在.h中,包括函数定义.变量定义.预处理等. 但是,.h 和 .c 在项目中承担的角色不一样 ...

  6. c++头文件被c语言调用需要注意什么_嵌入式C语言之模块化编程

    C语言中的模块化体现在两个方面: 1 函数. 函数是C语言的最小单位,每个函数均实现一个独立的功能,于是每个函数均可以当做是一个最小的功能模块.这样,C语言就实现了最基本的模块化. 2 文件. 在C语 ...

  7. C语言探索之旅 | 第二部分第一课:模块化编程

    C语言之父 Dennis Ritchie -- 简书作者 谢恩铭 转载请注明出处 第二部分第一课:模块化编程 上一课是C语言探索之旅 | 第一部分第十课:练习题+习作,至此,我们[C语言探索之旅]的第 ...

  8. C语言模块化开发,深入多文件编程

    目录 文章目录 目录 多文件编程 项目分割 避免命名冲突 项目生成的过程 预处理 编译 汇编 链接 语言发展的过程 机器语言 汇编语言 C语言 高级语言 编译的本质 目标文件里藏着什么 可执行文件 链 ...

  9. C语言怎么进行编程大型项目,如何对一个大的项目进行模块化编程

    当你在一个项目小组做一个相对较复杂的工程时,意味着你不再独自单干.你需要和你的小组成员分工合作,一起完成项目,这就要求小组成员各自负责一部分工程.比如你可能只是负责通讯或者显示这一块.这个时候,你就应 ...

最新文章

  1. String SringBuffer StringBuilder区别
  2. 正在安装虚拟网络驱动程序卡住了_如何在Hyper-V、Virtual PC等虚拟机中使用USB设备...
  3. 采购订单单价金额屏蔽
  4. sqlserver 日期函数
  5. Silverlight学习之——我的看法
  6. Cover Protocol首次对xCOVER进行回购
  7. Python实现对nginx日志access.log统计
  8. RFC 5961翻译
  9. Caffe学习:Blobs, Layers, and Nets
  10. 音频处理之语音加速播放
  11. 伪静态化不正常,电脑打不开贴子,手机可以
  12. 水系图一般在哪里找得到_厦大赵金保团队EnSM:新型聚阴离子锌盐水凝胶电解质实现具有高择优取向沉积的超稳定、高可逆水系锌金属负极...
  13. esp8266 蓝牙耳机_基于Qualcomm QCC3001/TWS迷你型入耳式蓝牙耳机方案
  14. 什么是元数据(Metadata)
  15. 为什么技术开发者应该读一读《浪潮之巅》
  16. 坚果云教你几招提升你办公效率的技巧!
  17. Redis存放短信验证码 RedisTemplate =>opsForValue
  18. 路由器的工作原理,形成,转发数据包的过程
  19. 【shell】scp 同时向多个主机拷贝数据
  20. 【转载】如何自己DIY组装一台台式电脑

热门文章

  1. 搭建iis自己可以别人_自己可以做网上商城的搭建吗?
  2. invalidate(true) 图形不显示_2D图像界面-ATI 图形界面卡
  3. mysql bundle.tar_MySQL 5.6 Bundle Tar安装
  4. python grequests极限_Python使用grequests并发发送请求
  5. 前n个正整数相乘的时间复杂度为_初一数学必学必考的21个知识点,附第一章有理数测试卷...
  6. bootstrap-table真实交互数据_博思远略:基于AI交互场景数据构建用户画像的几点思考...
  7. int转string的3种方法
  8. PowerDesigner的数据类型
  9. loadrunner基础知识问答(转)
  10. ansible(基础)