![]() |
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的函数和期望使用位图的函数上是类型兼容和可互换的(潜在的可怕错误)。 |
![]() |
Bala Ji · 以下BFS的实施效率如何? 4 月前 |
![]() |
Bioinfotec · 如何在R中将两个嵌套列表合并为一个列表? 5 月前 |
![]() |
b39b332d · 使用C++标准库实现高效间隔存储 9 月前 |
![]() |
ep84 · Python中处理扩展线性序列的快速(最快)方法 10 月前 |
![]() |
Gerry · python中高效的Merge排序实现 11 月前 |
![]() |
Noel · C#通过引用返回结构导致复制 1 年前 |