一个典型的 C语言库通常包含一个结构和一组运行于该结构之上的相关函数。前面我们已经看到C
是怎样处理那些在概念上和语法上相关联的函数的,那就是:把函数的声明放在一个 struct内,改变这些函数的调用方法,在调用过程中不再把
struct的地址作为第一个参数传递,在程序中增加一个新的数据类型(这样就不必在struct关键字前加一个typedef之类的声明了)。这样做带来很多方便—有助于组织代码,使程序易于编写和阅读。然而,在使得 C 库比以前更容易的同时,存在一些其他问题,特别是在安全与控制方面。本章重点讨论struct中的边界问题。在任何关系中,存在相关各方都遵从的边界是很重要的。当我们建立了一个库之后,我们就与该库的用户(也可以叫用户程序员)建立
了一种关系,他是另外的程序员,但他需要用我们的库来编写一个应用程序或用我们的库来建立更大的库。在C语言中,struct同其他数据结构一样,没有任
何规则,用户可以在
struct中做他们想做的任何事情,没有办法来强制任何特殊的行为。比如,即使我们已经看到了上一章中提到的initialize()函数和
cleanup()函数的重要性,但用户有权决定是否调用它们。再比如,我们可能不愿意让用户去直接处理
struct中的某些成员,但在 C语言中没有任何方法可以阻
阅读(1933) | 评论(0) | 转发(0) |