2

可以在纯C中进行 OO 编程。

一些策略使用预处理器宏来使其更容易且不易出错。一些策略包括添加由预处理器扩展为纯 c 的新语法,以及基对象类和一些内存管理方法。

似乎 Objective-C 是从一个类似这样的项目开始的

是否存在任何允许将 Objective-c 语法处理为纯C的工具?没有探索它,它似乎是可行的。

澄清一下,我不是在询问将 iOS 代码编译到其他平台,或者询问 cocoa 库到其他平台的端口,我想知道在纯 C 中使用 oo 技术的方法,使用 Objective-C 语法和预处理器或预编译步骤。

4

3 回答 3

1

便携式对象编译器。它无法编译现代 Objective-C,但听起来它非常适合您的要求。看这里讨论POC的缺点

C++ 的情况更有趣。Cfront 是生成 C 代码的原始 C++ 编译器,但除了早已过时之外,它还是商业化的,今天不能(容易?)下载。幸运的是,Comeau C/C++据说非常现代且符合标准。它的价格为 50 美元。

但是,我不希望从它们中的任何一个(尤其是功能齐全的 Comeau)中获得非常易读的 C 代码。

于 2012-10-12T08:40:49.843 回答
-1

不,这是不可能的,因为 Objective-C 的所有特殊(非标识符)符号都不能用作预处理器宏。至少不是标准的 C 预处理器。

其他预处理器可能能够定义具有非标识符名称的宏,尽管我不知道。

在 Objective-C 的早期(以及 C++)谈论预处理器时,它可能(并且在 C++ 的情况下,明确地)是一个定制的解析器,而不是输出汇编程序或目标代码,而是输出 C 代码。

于 2012-10-12T07:11:00.103 回答
-1

可以用纯c进行oo编程吗?

是的,因为 oo 是一个哲学问题。看看 glib 以及如何做 c 样式对象:http: //developer.gnome.org/glib/

苹果用核心基金做到了:https ://developer.apple.com/library/mac/#documentation/CoreFoundation/Conceptual/CFDesignConcepts/CFDesignConcepts.html#//apple_ref/doc/uid/10000122i

顺便说一句:是否存在任何允许将objective-c 语法处理为面向对象的纯c 的工具?

是的:gcc(根据 Wiki 的 GCC 4.6,从未实际检查过;))和 clang,您每天都在使用的工具。这是制作 obj-c obj-cAble 的 Objective-C Runtime,所以你也需要 libobjc.A.dylib 库。您可以用纯 c 代码编写 obj-c,因为所有消息 '[]'、'@' 指令和其他 obj-c 内容都在编译后转换为 c。

于 2012-10-12T08:20:04.497 回答