如何使用char *类型的参数将NULL传递给外部函数?

时间:2012-12-22 11:50:26

标签: haskell ffi c2hs

我正在编写Haskell绑定到某个C项目,并且有一个类型为

的函数
void foo(char *);

问题是foo检查此指针是否为NULL值,并执行与正常行为不同的操作。在我的Haskell中,此函数的源包装器具有类型foo :: String -> IO ()并在其中使用newCString来封送它的参数。

我想知道如何让用户能力通过NULL?我一直期待newCString ""0以来"" /= "\0"给我NULL,但事实并非如此。

我现在看到的唯一方法是使用“”作为用户想要{{1}}的指标,但这似乎是黑客的。我期待这个问题很常见,但没有在SO上找到问题。

1 个答案:

答案 0 :(得分:4)

您可以将功能更改为

foo :: Maybe String -> IO ()

然后Nothing向您的C函数发送nullPtr