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