Haskell中的FFI,关于语言CPP的问题以及如何将c结构与FFI一起使用
我对哈斯克尔的外国金融机构有一些问题Haskell中的FFI,关于语言CPP的问题以及如何将c结构与FFI一起使用,haskell,ffi,Haskell,Ffi,我对哈斯克尔的外国金融机构有一些问题 我知道我必须使用pragma语言{-#language ForeignFunctionInterface},但是当我使用{-#language CPP,ForeignFunctionInterface}时,我可以对CPP做什么“更多”呢 我在c语言中使用一个函数,它使用一个结构,在FFI中如何处理这个问题 当我必须使用CInt和仅使用Int时 如果启用CPP语言扩展,则可以合法地将C预处理器语法合并到Haskell程序中 访问结构要复杂一点。最简单的方法可能
{-#language ForeignFunctionInterface}
,但是当我使用{-#language CPP,ForeignFunctionInterface}
时,我可以对CPP做什么“更多”呢结构
,在FFI中如何处理这个问题CInt
和仅使用Int
时CPP
语言扩展,则可以合法地将C预处理器语法合并到Haskell程序中peek
和poke
方法。这个工具可以帮助你Int
传递到C或从C传递出去,都可以使用CInt
,因为这将确保进行任何所需的编组(同样适用于CDouble
,CString
等)更多信息请访问:
CPP
是C预处理器。它允许您使用条件编译和makros。通常,您不需要这样做,但一旦有了依赖于平台的代码,它就会变得很有用,其中要编译的代码由外部脚本决定(如autotools)Cint
。编写高级绑定时,请切换到Int
,因为它不需要用户导入所需的库,并且是Haskell标准我有一个c函数,比如:int foo();我必须在haskell签名Int或CInt中书写,直到我jzst使用Int end allwork@ewggwegw:对于其自身的功能,请使用CInt。根据您的平台,使用Int可能有效,也可能无效。
foreign import ccall“foo”c_foo::IO CInt
。