第十章程序开发技术.PDF

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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 系统的预处理功能,以达到对源程序的适当物理划分,并设法保证组成同一个程 序的不同部分之间的一致性,以便使编译之后的目标代码模块能组合成一个具有内在一致性 的完整的可执行程序。 在一般性地讨论分块开发中的问题之前,让我们先看一个

您可能关注的文档

文档评论(0)

***** + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档