c语⾔模块化程序设计思想的理解,C语⾔模块化程序设计思想
的理解
模块划分
模块划分的"划"是规划的意思,意指怎样合理的将⼀个很⼤的软件划分为⼀系列功能独⽴的部分合作完成系统的需求。
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 ⽂件 */
25
/*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*/明解c语言
#include "module1.h" /* 在模块2 中包含模块1 的.h ⽂件 */
/*module3 .c*/
#include "module1.h" /* 在模块3 中包含模块1 的.h ⽂件 */
这样如果模块1、2、3 操作a 的话,对应的是同⼀⽚内存单元。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。