我目前使用不透明指针作为我的标准封装技术,但是查看 OpenGL API 让我认为使用 id 编号可能是更好的选择。我想从经验丰富的 C 程序员那里得到一些建议(我只积极使用该语言大约 2 年)。
以下是我想要确认或纠正的最初想法。
身份证号码的可能优点:
如果使用 id 编号,则在实现中使用对象/内存池相当简单
id 号不必映射到系统内存(在 GL 情况下可以参考图形内存)
身份证号码的可能缺点:
- 使实现稍微复杂一些
考虑到使用共享库的情况,还有一个类似的问题: 我应该为我的不透明对象使用整数 ID 还是指针? 我的问题不是关于共享库,而是关于从用户代码中隐藏实现细节的一般情况。
我想您可以 typedef 一个 MyObjectHandle 以使库能够在 id 号和不透明指针之间切换。
问题是: 使用 C 编程语言的不透明指针与 id 数字的优缺点是什么?