没有合适的资源?快使用搜索试试~ 我知道了~
C语言嵌入式系统编程修炼之软件架构篇.doc
1星 需积分: 9 12 下载量 181 浏览量
2009-04-24
11:47:23
上传
评论
收藏 45KB DOC 举报
温馨提示
试读
6页
C语言嵌入式系统编程修炼之软件架构篇.docC语言嵌入式系统编程修炼之软件架构篇.doc
资源推荐
资源详情
资源评论
模块划分的"划"是规划的意思,意指怎样合理的将一个很大的软件划分为一系列功能独立的部分合作完成
系统的需求
模块划分
模块划分的"划"是规划的意思,意指怎样合理的将一个很大的软件划分为一系列功能独立的部分合作
完成系统的需求。C
语言 作为一种结构化的程序设计语言,在模块的划分上主要依据功能(依功能进行划
分在面向对象设计中成为一个错误,牛顿定律遇到了相对论),C 语言模块化程序设计需理解如下概念:
( 1 ) 模块即是一个.c 文件和一个.h 文件的结合,头文件(.h)中是对于该模块接口的声明;
(2) 某模块提供给其它模块调用的外部函数及数据需在.h 中文件中冠以 extern 关键字声明;
(3) 模块内的函数和全局变量需在.c 文件开头冠以 static
关键字声明;
(4) 永远不要在.h 文件中定义变量!定义变量和声明变量的区别在于定义会产生内存分配的操作,
是汇编阶段的概念;而声明则只是告诉包含该声明的模块在连接阶段从其它模块寻找外部
函数和变量。如:
/*module1.h*/
int a = 5; /* 在模块 1 的.h 文件中定义 int a */
/*module1 .c*/
#include "module1.h" /* 在模块 1 中包含模块 1 的.h 文件 */
/*module2 .c*/
#include "module1.h" /* 在模块 2 中包含模块 1 的.h 文件 */
/*module3 .c*/
#include "module1.h" /* 在模块 3 中包含模块 1 的.h 文件 */
以上程序的结果是在模块 1、2、3 中都定义了整型变量 a,a 在不同的模块中对应不同
的地址单元,这个世界上从来不需要这样的程序。正确的做法是:
/*module1.h*/
extern int a; /* 在模块 1 的.h 文件中声明 int a */
/*module1 .c*/
#include "module1.h" /* 在模块 1 中包含模块 1 的.h 文件 */
int a = 5; /* 在模块 1 的.c 文件中定义 int a */
/*module2 .c*/
#include "module1.h" /* 在模块 2 中包含模块 1 的.h 文件 */
资源评论
- weixin_446404902019-07-06基本没啥用,不用下载浪费积分了
江工
- 粉丝: 22
- 资源: 51
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功