首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >目的-C稳定ABI

目的-C稳定ABI
EN

Stack Overflow用户
提问于 2012-07-27 18:18:24
回答 1查看 1.5K关注 0票数 7

我主要是C++的人。由于C++缺乏官方的ABI,所以对于支持多个编译器的组件设计,我总是使用类似COM的方法。

最近,我遇到了这样一个问题:Objective是否会取代COM类的方法?显然,要使Objective成为替代目标,需要一个稳定的ABI,因此我想知道目标C是否存在(在所有主要的OSes OSX、GNU/Linux、++上),以及使用Objective(++)作为不同编译器创建的组件之间的“粘合剂”有多容易。

编辑:如Nikolai指出,对COM的简短描述可能会有所帮助。COM本质上是一个“二进制标准”,它允许混合不同编译器(以及各种语言)的二进制代码。COM的载体是接口,它定义方法(映射到C++的虚拟函数)。组件实现至少一个接口,并作为DLL分发。它们可以位于系统的任何位置(位置在注册表中指定),并且可以由任何COM-客户端通过它们实现的接口的ID加载。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-27 18:38:45

我只能说苹果的实现,因为我没有GNU或其他端口的经验。

Objective在很大程度上依赖于C的ABI (比如函数调用和结构的内存布局)。

它自己的ABI在苹果的实现中经历了一些变化,比如非脆弱实例变量引入了“现代运行时间”,属性的引入,更快的异常处理,垃圾收集,__weak“现代运行时间”的支持。

有些更改是向后兼容的,有些则不是。但是,由于整个系统和框架都是由苹果提供的,而这些更改通常是与其他不兼容的更改(转向英特尔和LP64)一起引入的,这对用户没有任何影响。

编辑:,您应该记住的一件事是,目标C不仅依赖于固定的ABI,而且还依赖于兼容的运行时。为了你的目的,这是又一个值得关心的头痛问题。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11693436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档