我想國外進口一些C頭的功能,但如何處理其定義爲類型FILE *的標準錯誤:Haskell如何使用extern FILE * from c?
extern FILE* __stderrp;
#define stderr __stderrp
也許不準確。我用c2hs我FFI工作,並已具備:
{#pointer *FILE as File foreign finalizer fclose newtype#}
,但我無法導入標準錯誤是這樣的:
foreign import ccall "stdio.h stderr" stderr :: File
我的C函數簽名:
void func(FILE*);
我可以用c2hs導入func:
{#fun func as^{`File'} -> `()'#}
我需要使用stderr來運行func:
func(stderr);
我是noob的外國進口機制。看來我不能用這種方式導入stderr。
ps。也許我會包裝我的func在一個新的功能
void func2(void){func(stderr);}
這是一個解決方法,但似乎不乾淨。
什麼問題?也可以用'foreign import'導入它。 – arrowd