我想用下面的sig包装一组C函数:
ErrorCode Initialize(int *argc,char ***args, ...)
如何在FFI调用中表示双指针?它是一个指向字符串列表的指针;以下是合理的吗?
foreign import ccall unsafe "lib.h Initialize"
c_initialize :: Ptr CInt
-> Ptr [String]
-> IO (Ptr CInt)
或者是第二个参数 Ptr (Ptr Char)
?到目前为止我可以阅读(真实世界Haskell和Wikibook),我的C有点生疏 . 提前致谢
- 更正:RWH实际显示
pcre_compile()
的接口:
-- PCRE-compile.hs
foreign import ccall unsafe "pcre.h pcre_compile"
c_pcre_compile :: CString
-> PCREOption
-> Ptr CString
-> Ptr CInt
-> Ptr Word8
-> IO (Ptr PCRE)
对应于:
-- pcre.h
pcre *pcre_compile(const char *pattern,
int options,
const char **errptr,
int *errofset,
const unsigned char *tableptr);
1 回答
因此,考虑到所有这些建议,似乎最合适的签名就像
谢谢你们!将及时向大家发布