【发布时间】:2012-03-06 23:28:37
【问题描述】:
我不是低级非面向对象编程语言方面的专家,而且我正在为工作项目编写一些 C 代码。我正在尝试创建一些体面的抽象数据类型来使用,谷歌搜索让我意识到人们以两种方式使用基于结构的 ADT。有些人将数据类型定义为结构:
typedef struct adt {
//content here
} adt;
并在头文件中向世界公开。
其他人将数据类型定义为 指针 到结构:
// In .c file:
typedef struct adt_s {
//content here
} adt_s, *adt;
// In .h file:
typedef struct adt_s *adt;
我知道这种方法允许您在不向外界提供任何有关此结构内部内容的信息的情况下对结构进行类型定义,因此程序员可以仅使用同一头文件中提供的函数对其进行操作数据类型。
还有其他理由选择另一个吗?何时将 ADT 定义为结构以及何时将它们定义为指向结构的指针,是否有一般的“经验法则”?
【问题讨论】:
标签: c struct typedef abstract-data-type