我对 Haskell 中的 FFI 有一些疑问
{-# LANGUAGE ForeignFunctionInterface #-}
但是当我使用 {-# LANGUAGE CPP, ForeignFunctionInterface #-}
时有什么区别?我可以用 CPP 做什么“更多”struct
,我如何在 FFI 中处理这个问题? CInt
当只是 Int
? 最佳答案
CPP
语言扩展,然后您可以合法地将 C 预处理器语法合并到您的 Haskell 程序中。 Storable
typeclass定义 peek
和 poke
结构的每个字段的方法。 hsc2hs工具可以提供帮助。 CInt
每当您需要通过 Haskell Int
往返于 C,因为这将确保进行任何所需的编码(CDouble
、CString
等也是如此)。 X11 包有 many examples通过 FFI 定义和编码结构。
更多信息在:
关于haskell - Haskell 中的 FFI,关于 LANGUAGE CPP 的问题以及如何在 FFI 中使用 c 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5889096/