Haskell的Foreign.C相当于C的&符号运算符(&)

时间:2011-04-21 00:15:52

标签: pointers haskell ffi ampersand

如您所知,对于C中的任何标识符ident,您可以编写&ident以获取ident的内存位置(指针),无论该位置是否位于堆或堆栈。在使用C类型时,访问此功能通常很有帮助。

FFI中的Haskell是否有相同的操作?

1 个答案:

答案 0 :(得分:2)

如果你有一个C标识符,你要导入Haskell,你可以通过“&”将它转换为指向该地址的指针。 FFI declarations中的语法,如下所示:

foreign import ccall "&" bar :: Ptr CInt

通常,这是一件非常罕见的事情,因为您导入的几乎所有东西都已经是指针。

Haskell值本身也可以使用stable pointers转换为指针,以确保它们不受垃圾收集器的影响。