gpt4 book ai didi

haskell - ccall 和 capi FFI 调用约定之间的差异

转载 作者:行者123 更新时间:2023-12-02 16:52:28 24 4
gpt4 key购买 nike

我发现有两个调用约定使用 GHC's FFI :ccallcapi。该文档没有关于这两个约定的太多信息。它们之间有什么区别,什么时候应该使用它们?一个比另一个快吗?

最佳答案

ccall 是正常的方式。它的工作原理是直接链接到(通常用 C 编写的)库中定义的符号。

capi 是一个在 C 源代码级别工作的 ghc 扩展。这就是为什么它可以访问 ABI 级别不存在的东西,例如宏。 (我不知道它是如何实现的,但我猜它会生成一个小的 C 函数包装器,然后在幕后用 C 编译器对其进行编译。)

我会尽可能使用ccall。它是语言标准的一部分,总的来说看起来不那么“神奇”。

关于haskell - ccall 和 capi FFI 调用约定之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37687318/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com