This question already has answers here:
Does C have a standard ABI?

(8 个回答)


8年前关闭。




在我看来,C 库在混合使用不同版本或(有时)甚至不同编译器编译的库时几乎从来没有问题,而且许多语言似乎能够直接或以最少的努力与 C 库交互。

这都是因为 ABI 是标准的吗?

最佳答案

ABI 由操作系统和/或工具链定义,而不是由标准定义。例如,它定义了如何将参数传递给函数调用。堆栈帧的布局或系统调用的调用方式。

大多数语言能够与 C 库交互的原因很可能是因为大多数操作系统(或多或少)是用 C 编写的,将 C 库公开为 API 并基于此定义 ABI。如果用某种语言编写的库想要接口(interface)特定的操作系统,它必须能够接口(interface)这个操作系统的 ABI。

关于c - ABI 是 C 标准的一部分吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14884615/

10-12 20:21