c语言模块化程序设计思想的理解,C语言模块化程序设计思想的理解

本文探讨了C语言中模块化程序设计的概念,强调了模块划分的重要性。正确的方法是将每个模块视为一个.c文件和对应的.h文件,头文件仅声明接口,而定义应在.c文件中进行。extern关键字用于声明对外提供的函数和变量,static关键字用于限制函数和变量的作用域。通过遵循这些原则,可以避免重复定义导致的问题,确保不同模块间的一致性。
摘要由CSDN通过智能技术生成

模块划分

模块划分的"划"是规划的意思,意指怎样合理的将一个很大的软件划分为一系列功能独立的部分合作完成系统的需求。

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*/

#include "module1.h" /* 在模块2 中包含模块1 的.h 文件 */

/*module3 .c*/

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

这样如果模块1、2、3 操作a 的话,对应的是同一片内存单元。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值