![]() |
1
1
在回答您的第一个问题时,我建议使用不透明指针(也称为句柄)封装您的结构。 例如,您可以声明一个链表的句柄(此处为类似MS的命名):
我们假设linked_list_t是一个通用的(由空指针组成)。 通过这种方式,您可以隐藏链接列表的“句柄”是什么,或者以什么形式实现(信息隐藏):
句柄子类型也通常定义,例如PHLINKEDLIST(指向链表句柄的指针)。 为了方便,还可以定义相关类型(并使用C中可用的有限信息隐藏)。例如:链表元素类型可以定义为
有一些关于C语言中数据结构的好书可以查阅。这很好: http://www.amazon.com/Interfaces-Implementations-Techniques-Creating-Reusable/dp/0201498413 还要注意,LLELEMENT实际上与void兼容,因此如果您将其他类型的def定义为:
SYSTEMDATA与LLELEMENT兼容,因此编译器不会抱怨:
并呼叫:
其中lle是LLELEMENT类型。 这种类型检查可以通过在结构中封装简单成员来强制执行。如果我不记得很糟糕的话,在使用windows.h的程序中声明STRICT会导致句柄类型更安全(两者不兼容)。以下定义很常见:
如果更简单的定义是:
这两个句柄在期望使用windows的函数和期望使用位图的函数上是类型兼容和可互换的(潜在的可怕错误)。 |
![]() |
Community wiki · C中有哪些耗时的操作? 1 年前 |
![]() |
Community wiki · 将所有处理器电源都投入到任务中 1 年前 |
![]() |
Community wiki · C++为C添加了什么?[已关闭] 1 年前 |
![]() |
Community wiki · 打印1到1000,不带循环或条件 1 年前 |