如何将不透明类型与 Ctypes 绑定
How to bind opaque types with Ctypes
我正在为 Quartz 事件服务编写 OCaml 绑定[1]。
在某些情况下,我需要绑定不透明类型,如以下代码所示:
typedef CGEventRef _Nullable (*CGEventTapCallBack)(CGEventTapProxy proxy, CGEventType type, CGEventRef event, void *userInfo);
这里,CGEventRef
是一个指向我一无所知的 __CGEvent
结构的指针。我只通过它的接口操作这个类型。
如何使用 Ctypes 绑定此类不透明类型?
链接
目前我将不透明类型的指针视为空指针。
type machport_ref = unit ptr
let machport_ref = ptr void
type event_ref = unit ptr
let event_ref = ptr void
只要您不遵循指针,您就可以将其作为 c_void_p 处理。
指针只是内存地址,不管它是叫CGEventRef还是SomeOtherRandomPointer或者只是一个简单的void指针,它只需要内存地址作为参数。
我正在为 Quartz 事件服务编写 OCaml 绑定[1]。
在某些情况下,我需要绑定不透明类型,如以下代码所示:
typedef CGEventRef _Nullable (*CGEventTapCallBack)(CGEventTapProxy proxy, CGEventType type, CGEventRef event, void *userInfo);
这里,CGEventRef
是一个指向我一无所知的 __CGEvent
结构的指针。我只通过它的接口操作这个类型。
如何使用 Ctypes 绑定此类不透明类型?
链接
目前我将不透明类型的指针视为空指针。
type machport_ref = unit ptr
let machport_ref = ptr void
type event_ref = unit ptr
let event_ref = ptr void
只要您不遵循指针,您就可以将其作为 c_void_p 处理。
指针只是内存地址,不管它是叫CGEventRef还是SomeOtherRandomPointer或者只是一个简单的void指针,它只需要内存地址作为参数。