This question already has answers here:
Does C have a standard ABI?
(8 个回答)
8年前关闭。
在我看来,C 库在混合使用不同版本或(有时)甚至不同编译器编译的库时几乎从来没有问题,而且许多语言似乎能够直接或以最少的努力与 C 库交互。
这都是因为 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