-3
的我很迷茫之间的API (应用编程接口)和ABI(应用程序二进制接口)可以解释人我什么是这两个和他们的区别的概念?概念API和ABI
的我很迷茫之间的API (应用编程接口)和ABI(应用程序二进制接口)可以解释人我什么是这两个和他们的区别的概念?概念API和ABI
API在源代码级别定义模块可以为客户提供的对象和方法。你如何实例化它的对象?你需要传递什么论据给它的方法,它们返回什么?一般来说,当你想知道什么库函数可用以及如何使用它们时,你在问一个API。
ABI是一个较低级别的概念。它定义了模块和客户端之间传递的位和字节。他们在什么格式?他们是否被推入堆栈,通过寄存器,或存储在其他地方?函数返回时是否需要清理堆栈,如果有,谁负责处理呢?
完全愚蠢,但启发性的例子:
考虑一个库函数两个整数相乘:
long long multiply(unsigned int multiplicand, long multiplier);
它的API指定您有两个参数(一个无符号整数和有符号长叫它整数),并返回一个带符号的双精度长整数。
其ABI可以指定你使用这样的:
Protip:如果我是你,我会找到另一个数学库。这个太可怕了! :-)
调查维基百科,并回来一个具体的问题。 –