0

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

void foo(char *);

问题是foo检查这个指针的NULL值并做一些不同于正常行为的事情。在我的 Haskell 源代码包装器中,此函数具有类型foo :: String -> IO ()并使用newCStringinside 来编组它的参数。

我想知道我如何在NULL那里给用户能力通行证?从那以后,我一直期待这newCString ""会给我,但事实并非如此。0"" /= "\0"

我现在看到的唯一方法是使用“”作为用户想要的指示符NULL,但这似乎很骇人听闻。我期待这个问题很常见,但没有找到关于 SO 的问题。

4

1 回答 1

4

你可以改变你的功能

foo :: Maybe String -> IO ()

然后Nothing发送一个nullPtr到你的 C 函数。

于 2012-12-22T12:15:19.110 回答