C语言编程要点第章程序的编写和编译

上传人:s9****2 文档编号:464591105 上传时间:2023-09-29 格式:DOC 页数:9 大小:122KB
返回 下载 相关 举报
C语言编程要点第章程序的编写和编译_第1页
第1页 / 共9页
C语言编程要点第章程序的编写和编译_第2页
第2页 / 共9页
C语言编程要点第章程序的编写和编译_第3页
第3页 / 共9页
C语言编程要点第章程序的编写和编译_第4页
第4页 / 共9页
C语言编程要点第章程序的编写和编译_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《C语言编程要点第章程序的编写和编译》由会员分享,可在线阅读,更多相关《C语言编程要点第章程序的编写和编译(9页珍藏版)》请在金锄头文库上搜索。

1、C语言编程要点-第18章程序的编写和编译第 18章程序的编写和编译本章讲述在编译程序时可以使用的一些技术。在本章中,你将学到专业C 程序员在日常编程中所使用的一些技巧。你将会发现,无论是对小项目还是大项目,把源代码分解成几个文件都是很有益处的。在生成函数库时,这一点更为重要。你还将学到可以使用的各种存储模式以及怎样为不同的项目选择不同的存储模式。如果你的程序是由几个源文件组成的,那么你可以通过一个叫MAKE的工具来管理你的项目(project)。你还将学到“COM文件和 EXE文件的区别以及使用“COM”文件的一个好处。此外,你还将学到用来解决一个典型的DOS问题的一些技巧,这个问题就是“没有

2、足够的内存来运行DOS程序”。本章还讨论了扩展内存、扩充内存、磁盘交换区、覆盖管理程序和DOS扩展程序的用法,提出了解决 RAM阻塞”这一问题的多种方法,你可以从中选择一种最合适的方法18.1.程序是应该写成一个源文件还是多个源文件?如果你的程序确实很小又很紧凑,那么当然应该把所有的源代码写在一个“ C”文件中。然而,如果你发现自己编写了许多函数 ( 特别是通用函数 ) ,那么你就应该把程序分解成几个源文件 ( 也叫做模块 ) 。把一个程序分解成几个源文件的过程叫做模块化程序设计 (modular programming) 。模块化程序设计技术提倡用几个不同的结构紧凑的模块一起组成一个完整的程

3、序。例如,如果一个程序中有几种实用函数、屏幕函数和数据库函数,你就可以把这些函数分别放在三个源文件中,分别组成实用模块、屏幕模块和数据库模块。把函数放在不同的文件中后,你就可以很方便地在其它程序中重复使用那些通用函数。如果你有一些函数还要供其它程序员使用,那么你可以生成一个与别人共享的函数库(见 189) 。你永远不必担心模块数目“太多”只要你认为合适,你可以生成很多个模块。一条好的原则就是保持模块的紧凑性即在同一个源文件中只包含那些在逻辑上与其相关的函数。如果你发现自己把几个没有关系的函数放在了同一个源文件中,那么最好停下来检查一下程序的源代码结构,并且对模块做一下逻辑上的分解。例如,如果要

4、建立一个通信管理数据库,你可能需要有这样一个模块结构:-模块名内 容-Maincmaln()函数Screenc屏幕管理函数Menus c菜单管理函数Databasec数据库管理函数Utility c通用功能函数Contact c通信处理函数Importc记录输入函数Exportc记录输出函数Helpc联机帮助支持函数-请参见:18 10如果一个程序包含多个源文件,怎样使它们都能正常工作?18.2.各种存储模式之间有什么区别?DOS 用一种段地址结构来编址计算机的内存,每一个物理内存位置都有一个可通过段地址一偏移量的方式来访问的相关地址。为了支持这种段地址结构,大多数C 编译程序都允许你用以下6

5、 种存储模式来创建程序:-存储模式限制所用指针-Tiny( 微)代码、数据和栈一 64KBNearSmall( 小 )代码一 64KBNear数据和栈一 64KBNearMedium(中)代码一 1MBFar数据和栈一 64KBNearCompact( 紧缩 )代码一 64KBNear数据和栈一 1MBFarLarge( 大 )代码一 1MBFar数据和栈一 1MBFarHuge*( 巨 )代码一 1MBFar数据和栈一 1MBFar-* 注意:在 Huge 存储模式下,静态数据 ( 如数组 ) 可以超过 64KB,这在其它存储模式下都不行。Tiny存储模式的限制很严( 所有的代码、数据和栈都

6、被限制在64KB 中 ) ,它通常用来生成COM文件。由于内存地址的“安排”方式的限制,Huge 模式会带来显著的性能损失,因此它很少被使用。请参见:18 3最常使用的存储模式有哪些 ?18 4应该使用哪种存储模式 ?18.3.最常使用的存储模式有哪些 ?最常使用的存储模式有Small , Medium 和 Large 这几种。 Tiny 存储模式一般只用来生成 COM文件,在现在的高性能计算机上,它已很少被使用了。Compact 存储模式允许程序有很少的代码和大量的数据,在今天的商业应用环境中,它同样也不常用了。由于 Huge 存储模式的存储地址机制导致它的效率较低,所以它也很少被使用。一般

7、说来, 你应该根据程序的大小选用Small ,Medium或 Large 中的一种存储模式。对一个小的实用程序来说, Small 存储模式可能是最合适的,这种存储模式允许有64KB的代码和64KB数据和栈。如果程序有更大一些的数据要求,你可以使用Medium存储模式,它允许程序有多达1MB的可寻址数据空间。对于更大的程序,你应该使用Large 存储模式,它允许程序有1MB的代码和 1MB的数据和栈空间。如果你在编写一个Windows程序或者在使用一个32 位编译程序,那么你最好使用Small 存储模式,因为这样的环境并不受DOS程序的段地址结构的限制。请参见:18 2 各种存储模式之间有什么区

8、别?18 4 应该使用哪种存储模式?18.4.应该使用哪种存储模式?如果要生成一个“ COM”文件,必须使用Tiny存储模式,即所有的代码、数据和栈空间都被限制在64KB中。小的实用程序普遍使用这种存储模式。相对较小的程序也可以使用Small 存储模式,只不过不必把整个程序都限制在 64KB 中。在 Small 存储模式下,有 64KB的代码空间和 64KB的数据和栈空间。 除了用于小程序外, Small 存储模式还可用在 Windows 或 32 位编译程序这样的环境中,因为在这些环境中内存寻址并不受 DOS中 16 位的限制。如果一个程序的代码量相对较大而静态数据量相对较小,你可以用Med

9、ium 存储模式来创建程序。如果程序很大 ( 需要很多模块, 大量的代码和数据) ,那么你应该选用Large 存储模式, 这种存储模式常用在DOS下编写商用软件。与 Small ,Medium 和 Large 存储模式相比, Compact 和 Huge 存储模式要少用得多。Cornpact 存储模式允许程序有大量的静态数据和相对较少(64KB 或更少 ) 的代码。满足这种模式的程序很少,常常是一些转移程序,它们有大量必须存到内存中的静态转移表。Huge 存储模式与Large存储模式基本相同,只是Huge存储模式允许程序有超过64KB 的静态数据。与Compact 存储模式相似,Huge 存储

10、模式也很少被使用,这主要是因为它会带来显著的性能损失。由于Huge存储模式的执行效率较低,因此你应该避免使用这种模式,除非你确实需要超过64KB的一个数组或其它静态数据。 记住,数组和其它程序结构可通过malloc()和 calloc()在程序运行时进行动态分配,它们在本质上并不必须是静态的。请参见:18 2 各种存储模式之间有什么区别?18 3 最常使用的存储模式有哪些?18.5.怎样生成一个“ COM”文件?生成一个“ COM”文件是指用Tiny存储模式编译程序,并用特殊的连接命令产生扩展名为 COM而不是 EXE的文件。记住,如果要使一个程序成为一个“COM”文件,那么所有的代码、数据和

11、栈都必须限制在64KB 之内。这种存储模式通常只被一些很小的程序使用,例如TSR程序和小的实用程序。每个编译程序生成“COM”文件的方法都是不同的,你应该在编译程序手册中查找有关信息,以了解哪些编译选项或连接选项是用来生成 COM文件而不是 EXE文件的。请参见:18 6“COM”文件有哪些地方优于“EXE文件 ?18.6.“COM”文件有哪些地方优于“EXE”文件?一个“ COM”文件的所有代码、数据和栈都被限制在64KB之内,因此,它只能用在一些小的应用中,例如实用程序和TSR 程序 ( 终止并驻留程序) 。“ COM”文件的一个明显优点就是它的装入要比“EXE文件快得多。“COM”文件也被称作“内存映象”文件,因为它可以直接装入内存,不需要任何“处理”。“ EXE文件中包含了由连接程序插入到其它文件头中的一些特殊的组装指令,这些指令中包括一个用来管理可执行程序的不同部分的重定位表。“COM”文件中不包含任何这样的指令或重定位表,因为整个程序可以装入64KB 的内存空间中。因此,DOS不必去分析任何组装指令,“COM”文件的装入速度也就比.EXE 文件快。“COM”文件通常很简单,因此它们所能实现的功能也就受到限制。例如,你不能在“COM”文件中从远

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号