C语言模块化程序设计概念理解

①模块即一个“.c”文件和一个“.H”文件的结合,“.h”头文件是对该模块接口的声明。

②某模块提供给其他模块调用的外部函数及数据需在“.h”文件中冠以extern关键字声明。

③模块内的函数和全局变量需在“.c”文件头冠以static关键字声明。

④永远不要再“.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文件*/

以上程序的结果是在模块123中都定义了整型变量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文件*/

 

/*module3.c*/

#include”module1.h” /*在模块3中包含模块1.h文件*/

 

这样如果模块123操作变量a的话。对应的是同一内存单元。

 


  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值