Haskell FFI 双指针参数

Haskell FFI double pointer argument

我想用以下符号包装一组 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);

所以,考虑到所有这些建议,最合适的签名似乎是

foreign import ccall unsafe "lib.h Initialize"
c_initialize :: Ptr CInt 
             -> Ptr (Ptr CString)
             -> IO (Ptr CInt)

谢谢大家!会及时通知你