1

ご存じのようにident、Cの任意の識別子について、その場所がヒープ上にあるかスタック上にあるかに関係なく、&identへのメモリ位置 (ポインタ) を取得するように記述できます。identC 型を使用している場合、この機能にアクセスできると便利なことがよくあります。

FFIのHaskellに同等の操作はありますか?

4

1 に答える 1

2

Haskell にインポートする C 識別子がある場合は、次のように、 FFI 宣言の「&」構文を使用して、そのアドレスへのポインターに変換できます。

foreign import ccall "&" bar :: Ptr CInt

通常、インポートするほとんどすべてが既にポインターであるため、これを行うことは非常にまれです。

Haskell の値自体も、ガベージ コレクターの影響を受けないようにするために、安定したポインターを使用してポインターに変換される場合があります。

于 2011-04-21T13:55:59.923 に答える