8.3 程序组织 达到可移植性的方式,最重要的有两种,我们将把它们称为联合的方式和取交集的方式。 联合方式使用各个特殊途径的最佳特征,采用条件式的编译和安装,根据各个具体环境的特 殊情况分别进行处理。这样,结果代码是所有方案的一种联合,它可以利用各系统在能力方 面的优点。这种方式的缺点包括:安装过程的规模和复杂性,由代码中大量费解的编译条件 造成的复杂性等等。 只使用到处都可用的特征。我们建议采用取交集的方式,即:只使用那些在所有目标系统里 都存在的特性,绝不使用那些并不是到处都能用的特征。强求使用普遍可用特性也有危险性, 这可能限制了目标系统的范围,或者限制了程序的功能。此外,也可能在某些系统里导致性 能方面的损失。 为了比较这两种不同方式,我们来看一些使用联合方式的例子,以及采用交集方式对它 们重新进行整理的情况。正如你将要看到的,联合方式的代码从设计上看根本就是不可移植 的,虽然它们声称可移植性是自己的目标;而交集代码不仅是可移植的,通常也更加简单。 下面是个小例子,这里试图处理环境中因为某些原因而没有标准头文件 s t d l i b . h的情 况: 如果偶然用用的话,这种防御式测试还是可以接受的,但频繁地这样做就很不好了。这里也 提出了另一个问题:到底有多少 s t d l i b函数最后出现在这种形式的或者其他类似形式的条件 代码里。如果在程序里用到了 m a l l o c或者r e a l l o c,那么肯定也需要用其他的函数,例如 f r e e。如果unsigned int的大小与s i z e _ t(这是m a l l o c和r e a l l o c参数的正确类型 )不 一样,那么又会出什么问题?进一步说,我们怎么知道 S T D C _ H E A D E R S或_ L I B C确实已经定 156计计程序设计实践 下载
1
包括了计算机二级C语言的教材、上机考试题库、历年真题等
2019-12-21 20:00:43 34.51MB 计算机二级 C语言
1