Haskell FFI:结构内的函数指针

And*_*ris 4 struct haskell function-pointers ffi

假设我在 C 中有这个结构:

/* C */
struct foo {
  char *name;
  int (*links)(foo*);
  /* ... */
};
Run Code Online (Sandbox Code Playgroud)

如果有x :: Ptr Foo,我怎样才能得到一个FunPtrto x's links,而不使用castPtrToFunPtr?我想避免这种情况,因为 Haddocks 中关于函数和非函数具有不同地址范围(可能还有大小?)的警告,因此转换可能会导致这些平台上出现问题行为。

And*_*ris 5

...好吧,那算了。:)

\n\n

如果其他人想知道这一点,您可以使用 hsc2hs\xe2\x80\x99s #peek(等)将字段读取为FunPtr a,而且它似乎可以正常工作。

\n