一部の C プロジェクトへの Haskell バインディングを作成していますが、次の型の関数があります。
void foo(char *);
問題は、fooこのポインターのNULL値をチェックし、通常の動作とは異なることを行うことです。私の Haskell ソース ラッパーでは、この関数の型と内部をfoo :: String -> IO ()使用して引数をマーシャリングしています。newCString
どうすればユーザー能力パスをNULLそこに与えることができるのだろうか? 以来、それがnewCString ""私に与えることを期待していましたが、そうではありません。0"" /= "\0"
今のところ私が見る唯一の方法は、ユーザーが望んNULLでいる指標として "" を使用することですが、それはハックのようです。この問題は非常に一般的であると予想していますが、SOに関する質問は見つかりませんでした。