什么是一组漂亮的预处理器 hack(兼容 ANSI C89/ISO C90),它们可以在 C 中实现某种丑陋(但可用)的面向对象?
我熟悉几种不同的面向对象语言,所以请不要回答“学习 C++!”之类的答案。我已经阅读了“使用 ANSI C 进行面向对象编程”(注意: PDF 格式 )和其他一些有趣的解决方案,但我最感兴趣的是你的 :-)!
C 对象系统 (COS)听起来很有希望(它仍处于 alpha 版本)。为了简单和灵活,它尽量减少可用的概念:统一的面向对象编程,包括开放类、元类、属性元类、泛型、多方法、委托、所有权、异常、合同和闭包。有一份草稿文件(PDF) 对其进行了描述。
C 中的异常是在其他 OO 语言中发现的 TRY- CATCH-FINALLY 的 C89 实现。它带有一个测试套件和一些示例。
两者都由 Laurent Deniau 撰写,他在 C 语言的 OOP 方面做了很多工作。