- 1、本文档共35页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十章程序开发技术
裘宗燕 从问题到程序(2003 年修订),第十章 程序开发
第十章 程序开发技术
本章是这本书实质性内容的最后一章,这里要通过一些程序实例,综合性地总结本书中
所讨论的各方面内容,包括 C 语言里的一些主要机制以及写程序的各种基本技术,讨论一
些在编写较大程序时需要考虑的问题,同时介绍一些有用的编程技术。
10.1 分别编译和 C 程序的分块开发
随着学习的不断深入,我们在编程序时要处理的问题变得越来越复杂,写出的程序也越
来越长了。应该看到,教科书里的问题都做了许多简化,任何实际问题通常都比书里的例子
和习题中提出的问题更复杂得多。随着程序变得越来越大,许多新问题也随之出现了。
最明显情况的是源程序文件越来越大。大文件处理起来很麻烦,屏幕只能显示其中很小
一部分,翻阅查找信息都更费精力,更费时间。大的源文件总是慢慢建立起来的,建立过程
中经常需要编译调试其中的某个或者某些小部分,做起来就非常麻烦。
一个可能的方法是把不关心的部分“注释”起来。但这一方法很难系统化地采用,因为
新的临时性注释可能与程序中原有的注释冲突,改起来常常需要做许多变动。大型源文件的
另一个缺点是,哪怕你只改动了其中的一个字符,为了后面的程序调试,也需要把整个文件
重新加工一次,这又会浪费许多时间。此外,这种做法也相当危险。由于许多东西都放在一
个大文件里,如果开发或调试新加入部分时无意改动了已经做好的部分,那就又会带来无穷
无尽的烦恼。另一方面,一个大的软件系统通常是几个、几十个甚至更多人共同工作的结果。
许多人怎样用一个源文件工作?我们根本无法想象许多人一起改动一个大地程序文件时会
发生什么事情。
总之,实际程序开发通常不可能采用一个文件写一个程序的方式(除非程序很小,就像
我们开始学习时遇到的例子,实际上那些例子也牵涉到多个文件,因为每个程序都用到系统
的头文件),因为存在许多无法解决的困难,为此人们考虑了采用多个源文件开发一个程序
的方式。C 语言的设计本身就考虑了这个问题,并提供了一些支持机制。这里我们将以前一
章的程序实例为例,介绍这方面的情况。
10.1.1 分块开发的问题和方法
采用多个源程序文件开发一个程序的过程通常称为分块开发。分块开发得到 C 语言程
序加工过程的支持,因为 C 语言允许加工对象不是完整的程序,而是一个个的源程序文件。
分块开发出的各个源文件可以分别进行预处理和编译,得到一组程序目标文件;最后可以用
连接程序把这些目标文件和系统库函数、程序基本运行系统等连接起来,形成最后的可执行
文件。第五章的图 5.5 描述了这种开发过程的基本情况。
预处理的对象通常是一组源程序文件,得到的是一组新的源文件,其中不再包含任何预
处理命令(所有文件包含命令都用相应文件的内容取代,所有的宏都已替换掉,所有条件编
译的效果都已体现在作为预处理结果的源文件中,应该清除的代码段均已除去)。编译程序
处理的就是一组这样的源程序(人们通常将称它们为编译单位,translation units),将它们分
别编译为一组目标代码模块。只有到了连接时才需要一个程序的全部信息(程序的所有目标
代码模块)。连接系统将所有有关的目标代码模块装配到一起,解决这些模块里所有的定义
和使用之间的关联问题,并将必要的运行支持模块和系统库函数代码也连接到程序里,最终
1
裘宗燕 从问题到程序(2003 年修订),第十章 程序开发
得到一个可执行程序。
分块开发中最重要工作就是程序结构的“物理”组织。在 C 语言里做分块开发,需要
借助于 C 系统的预处理功能,以达到对源程序的适当物理划分,并设法保证组成同一个程
序的不同部分之间的一致性,以便使编译之后的目标代码模块能组合成一个具有内在一致性
的完整的可执行程序。
在一般性地讨论分块开发中的问题之前,让我们先看一个
您可能关注的文档
- 研究生教育质量及其多元性特征探析.PDF
- 第29届重庆市青少年科技创新大赛落幕.PDF
- 第3章Web开发必会的客户端技术.PDF
- 用爱呼唤童心.PDF
- 研究论文建构小型老人养护机构社工员之团体身份认同.PDF
- 第一组讨论结果-----原始稿.doc
- 第二届内蒙古自治区青年创新创业创优标兵个人.PDF
- 第五届中国互联网学术年会(CCFICoC2016)征文通知.PDF
- 第五章供应商选择与供应商管理.PDF
- 第六课第二框博大精深的中华文化学案.doc
- 2024高考物理一轮复习规范演练7共点力的平衡含解析新人教版.doc
- 高中语文第5课苏轼词两首学案3新人教版必修4.doc
- 2024_2025学年高中英语课时分层作业9Unit3LifeinthefutureSectionⅢⅣ含解析新人教版必修5.doc
- 2024_2025学年新教材高中英语模块素养检测含解析译林版必修第一册.doc
- 2024_2025学年新教材高中英语单元综合检测5含解析外研版选择性必修第一册.doc
- 2024高考政治一轮复习第1单元生活与消费第三课多彩的消费练习含解析新人教版必修1.doc
- 2024_2025学年新教材高中英语WELCOMEUNITSectionⅡReadingandThi.doc
- 2024_2025学年高中历史专题九当今世界政治格局的多极化趋势测评含解析人民版必修1.docx
- 2024高考生物一轮复习第9单元生物与环境第29讲生态系统的结构和功能教案.docx
- 2024_2025学年新教材高中英语UNIT5LANGUAGESAROUNDTHEWORLDSect.doc
文档评论(0)