gpt4 book ai didi

haskell - Haskell 中的 FFI,关于 LANGUAGE CPP 的问题以及如何在 FFI 中使用 c 结构

转载 作者:行者123 更新时间:2023-12-04 11:30:14 29 4
gpt4 key购买 nike

我对 Haskell 中的 FFI 有一些疑问

  • 我知道我必须使用语言编译指示 {-# LANGUAGE ForeignFunctionInterface #-}但是当我使用 {-# LANGUAGE CPP, ForeignFunctionInterface #-} 时有什么区别?我可以用 CPP 做什么“更多”
  • 我在 c 中使用一个函数,它使用 struct ,我如何在 FFI 中处理这个问题?
  • 当我必须使用 CInt当只是 Int ?
  • 最佳答案

  • 如果启用 CPP语言扩展,然后您可以合法地将 C 预处理器语法合并到您的 Haskell 程序中。
  • 访问结构有点复杂。最简单的方法可能是使用 the Storable typeclass定义 peekpoke结构的每个字段的方法。 hsc2hs工具可以提供帮助。
  • 您使用 CInt每当您需要通过 Haskell Int往返于 C,因为这将确保进行任何所需的编码(CDoubleCString 等也是如此)。

  • X11 包有 many examples通过 FFI 定义和编码结构。

    更多信息在:
  • RWH ch 17.
  • FFI Introduction on the Haskell wiki
  • Foreign.* in the base library
  • 关于haskell - Haskell 中的 FFI,关于 LANGUAGE CPP 的问题以及如何在 FFI 中使用 c 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5889096/

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