主要观点:
- Cello 被视为“胖指针库”,可创建带有额外运行时信息的指针用于多种任务和功能。
- Walter Bright 提出“胖指针”作为 C 的扩展以避免指针与数组关系带来的问题,但未被 C 标准接受,可在 C 中自行模拟。
- 通过将数组元素数量值放在指针前可实现“胖指针”,如 C 字符串库 sds 所用方法,不过其分配、释放和调整大小需特殊函数。
- 可通过添加运行时系统在 C 中实现类似“胖指针”的功能,Cello 将运行时信息存于指针前,使指针兼容标准 C 指针和函数。
- 类型对象是与对象关联的元数据,用于告知对象行为,Cello 中类型对象是类型类实例列表,类似 C++中的虚表,单个“类型类”或“接口”特征足以支持 Cello 的高级功能。
关键信息:
- “胖指针”可解决 C 中数组传递导致的元素数量无法确定问题。
- Cello 在堆和栈上分配“胖指针”的方法及相关函数。
- 类型对象的设计及在 Cello 中的作用。
重要细节:
- Cello 对 C 的修改是通过编译器或运行时实现,早期通过直接嵌入信息到 C 结构体,后来利用“胖指针”思想将运行时信息存于指针前。
- 类型类是各种行为的描述,可表示为函数指针结构体,如 Get 类型类。
- Cello 中类型对象结构复杂,简化示例类似特定格式的数组。
- 调用 new 等操作时通过查找类型对象和相应函数指针来实现。
- Cello 虽有诸多问题,但是唯一尝试全面实现“胖指针库”的,其展示了运行时设计的多种可能。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。