【发布时间】:2011-05-28 04:52:49
【问题描述】:
来自somewhere else的讨论:
C++ 没有标准的 ABI(应用程序二进制接口)
但 C 也不行,对吧?
在任何给定的平台上都差不多。如果缺少一种语言,它就无法作为跨语言交流的通用语言。
您对此有何看法?
【问题讨论】:
-
ABI?你的意思是API“应用程序编程接口”吗?
-
我认为 OP 是指应用程序二进制接口
-
不,ABI 在应用程序二进制接口中。
-
我认为@FredOverflow 的意思是ABI 应用程序二进制接口en.wikipedia.org/wiki/Application_binary_interface
-
我认为“在任何给定的平台上”有点狡猾,可能是偶然的。您几乎可以将“平台”定义为“始终使用相同的 C ABI”。具体来说,任何为动态加载代码定义的格式都必须为跨可执行边界的调用定义 ABI。该 ABI 当然需要支持 C 才能有任何实际用途(假设人们将使用 C 或 C++ 编写可执行文件),如果幸运的话,可能也支持 C++。如果它支持 C 但不支持 C++,则在您发布的所有内容上使用
extern "C"编写 C++,和/或对链接的可执行文件使用相同的编译器。