It is possible to do OO programming in pure C。
有些strategies使用预处理器宏来使其更容易且更不容易出错。一些策略涉及添加新语法,该语法由预处理器扩展为纯c,以及基础对象类和一些用于存储器管理的方法。
Objective-C似乎开始像这样一个项目
是否存在允许将objective-c语法处理为纯 C 的任何工具? 没有探索它,它似乎可行。
只是为了澄清,我不是要求将iOS代码编译到其他平台,或者询问有关其他平台的可可库的端口,我想知道如何在pure-C中使用oo技术,使用Objective-C语法和预处理器或预编译步骤。
答案 0 :(得分:1)
Portable Object Compiler。它无法编译现代的Objective-C,但听起来它非常适合您的要求。看一下discussion of POC's shortcomings
C ++的情况更有趣。 Cfront是生成C代码的原始C ++编译器,但除了已经过时之外它还是商业版,今天无法(轻松?)下载。幸运的是,Comeau C/C++被认为非常现代且符合标准。它的价格是50美元。
但是,我不希望从它们中的任何一个获得非常易读的C代码(特别是功能齐全的Comeau)。
答案 1 :(得分:-1)
不可能,因为Objective-C的所有特殊(非标识符)符号都不能用作预处理器宏。至少没有标准的C预处理器。
其他预处理器可能能够定义具有非标识符名称的宏,但我不知道。
在谈论Objective-C(以及C ++)早期的预处理器时,它可能(并且在C ++的情况下,最终)是一个定制的解析器,而不是输出汇编器或目标代码输出的C代码。 / p>
答案 2 :(得分:-1)
可以在纯c?
中进行oo编程是的,因为oo是一个哲学问题。看看glib以及如何做c风格对象:http://developer.gnome.org/glib/
Apple使用Core Fundation:https://developer.apple.com/library/mac/#documentation/CoreFoundation/Conceptual/CFDesignConcepts/CFDesignConcepts.html#//apple_ref/doc/uid/10000122i 来做到这一点顺便说一句:是否存在允许将objective-c语法处理为面向对象的纯c的任何工具?
是的:gcc(GCC 4.6根据Wiki,从未真正检查;))和clang,你每天都在使用的工具。 这是制作obj-c obj-cAble的Objective-C运行时,所以你也需要libobjc.A.dylib库。您可以在纯c代码中编写obj-c,因为所有消息'[]','@'指令和其他obj-c内容在编译后都在c中转换。