①模块即一个“.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文件*/

以上程序的结果是在模块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的话。对应的是同一内存单元。

C语言模块化程序设计概念理解相关推荐

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

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

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

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

  3. c语言程序设计 赵宏,C语言程序设计(模块化程序设计I )(6页)-原创力文档...

    第4章 模块化程序设计I (导学) C语言程序设计课程组 赵宏 示例:从键盘输入一个整数,判断该整数是否为素数. #include #include void main( ) { int x,i; s ...

  4. 单片机c语言模块化实例程序设计,单片机C语言模块化设计

    原标题:单片机C语言模块化设计 keil中实现 模块化编程.doc 在使用 KEIL 的时候,我们习惯上在一个.c 的文件中把自己要写的东西按照 自己思路的顺序进行顺序书写.这样是很普遍的写法,当程序 ...

  5. 山西农业大学c语言答案,第一章C语言及程序设计概述-东北农业大学教务处.doc...

    全国高等农林院校"十一五"规划教材 C语言程序设计 孙力 主编 中国农业出版社 内容简介 本书是全国高等农林院校"十一五"规划教材之一. 全书共11章,分别介绍 ...

  6. C语言02基础深入理解(二)

    指针基础 变量回顾 既然程序中的变量只是一段存储空间的别名 , 那么是不 是必须通过这个别名才能使用这段存储空间 ? 指针本质 ?  指针在本质上也是一个变量 ?  指针需要占用一定的内存空间 ?   ...

  7. 程序设计教程用c 语言编程,程序设计教程:用C/C++语言编程

    图书简介 本教材在作者20多年C/C++语言教学,特别是项目开发的基础上,站在初学者的角度,在注重基础知识学习的同时,以培养学生良好的编程规范意识和编程思想为重点精心编写,例程丰富,层次感强,非常适合 ...

  8. 2,Java语言基础-Java语言基本程序设计知识

    Java语言基础 Java语言基本程序设计知识 1,JavaAPI概述 1.1,什么是API API是指应用程序接口( Application Program Interface, API),故名思意 ...

  9. 模块化程序设计之自顶向下、逐步求精

    模块化程序设计最早出现在汇编语言中,在结构程序设计的概念提出以后,逐步完善并形成了模块化的程序设计方法.按照模块化程序设计思想,无论多么复杂的任务,都可以划分为若干个子任务.若子任务较复杂,则可以继续 ...

  10. 如何理解c语言的变量,C语言中变量的理解.PDF

    C语言中变量的理解 年第 期 建建 电电 脑脑 2011 3 59 C 语言中变量的理解 潘 莉 河南经贸职业学院 东校区 河南郑州 ( 冤 450009 ) 摘 要 在很多 级语言的基础语法中都有变 ...

最新文章

  1. android 自定义正方形 绕中心点旋转
  2. layui select 修改_layui修改select的值的方法
  3. 针对故障场景的血液,汗液和书写自动集成测试
  4. During a meeting, there was a woman
  5. 产生java的动态库文件so的配置步骤
  6. php 查询条件 session,PHP获取不到SESSION信息之一般情况解决方案
  7. Kubernetes 持久化存储是个难题,解决方案有哪些?\n
  8. S32K14x MCAL配置之MCU
  9. 安捷伦电源6319D实现GPIB通信
  10. SVN checckout 失败:Error: REPORT request on '/svn/signature/!svn/me' failed 的解决办法
  11. (分享)视频压缩Free Video Compressor 汉化版/中文版【全网唯一】
  12. Elastic:集群相关知识点总结(一)数据流 Data Stream、索引生命周期 ILM、可搜索快照 searchable snapshots、跨集群搜索 CCS、跨集群复制 CCR
  13. 论latex插入图片最好的方法!
  14. 基于ZigBee的城市道路除尘降温系统设计
  15. 2.4G与5GWiFi频段的区别
  16. python鱼眼图像识别_图像变换之矫正---鱼眼图像的矫正简介
  17. 8.1 幽灵(no.1~no.10)
  18. 调试时出现:undefined Expecting 'EOF','}',',',']', got STRING以下错误的解决方法
  19. 物料主数据 分类视图导入 BAPI_OBJCL_CREATE
  20. 力姆泰克伞齿轮转向箱

热门文章

  1. ups机房动环监控系统方案
  2. LE250UQ激光位移传感器
  3. 修改PPT导出图片DPI值
  4. Iphone的Wallet中如何移除电子登机牌凭证
  5. 单片机编程技术学习攻略
  6. java正则表达式 问号_正则表达式问号的四种用法详解
  7. python--爬虫51job(3.1)
  8. CF687 D2 C. Bouncing Ball(DP)
  9. Kvsc autorun.inf病毒
  10. C语言练习作品 - U盘病毒模拟