面向对象的ANSI C?
可能重复:
你能用C编写面向对象的代码吗?
你好,
我想知道是否可以使用严格的ANSI C作为面向对象的语言。 如果可能,我如何在ANSI C中创建一个类。虽然该语言不是为OO设计的,但我真的很想尝试这个。
任何例子,链接等都是值得赞赏的。
提前致谢,
Marnix van Rijswijk。
结构可以包含方法和变量
struct myStructFoo { int fooBar(); int privFooBar; };
这就是你如何使用普通的旧的ANSI C编译器派生OO“东西”,如果你想用C ++学习完整的OOP,你会更好地使用ANSI C ++编译器,因为它更适合你的需要……使用C语言的OOP样式是….以这种方式看待它,确保你可以使用一个结构使用一个对象,但名称并不完全……直观…因为struct
更像是用于保存字段和是整数数据结构的一部分,如链表,堆栈,队列等。如果您有ANSI C ++编译器,它的外观如下:
class myFoo { 上市: int fooBar(); 私人的: int privFooBar; };
比较并查看它看起来更直观,通过public
和private
关键字指定信息隐藏。
C没有通过类直接支持OO,但您可以轻松地模拟它。
如何执行此操作的基础是,您可以创建一个包含数据成员的结构和一个相关的函数列表,这些函数将指向该结构的指针作为它的第一个参数。
更多信息
这当然是可能的,虽然我不喜欢这样做。 面向对象C的一种流行方法可以在Gnome中使用的GObject架构中找到。 这篇文章(以及关于GObject的进一步阅读)应该给你一些想法:
实际上正在进行一种称为OOC语言的努力来编写像C这样面向对象的语言。 它与C略有不同,因此根本不是C语言中的对象,而且我个人从未使用过它 – 根据我的喜好,它与C相差太远,但它可能值得一看。
有趣的是,它确实在编译之前将“OOC”转换为C. 可能值得一看它是如何实现这一点的,因为它将有效地将对象转换为C.我怀疑这将像其他海报提到的那样完成(结构指针等),尽管我还没有看过它。
有点。 记住,C ++和objective-C都是用C编译器的预处理器一次处理的。 最后,你只需重写c ++