【发布时间】:2018-06-25 15:06:52
【问题描述】:
我先定义一个函数ADD:
add: func [ a [integer!] b [integer!] ] [a + b]
然后是一个结构体:
s: make struct! [
sadd [ function! ]
] add
但是Rebol struct 不支持FUNCTION!数据类型。如何将函数分配给 Rebol 结构?
【问题讨论】:
-
你为什么要这么做?
-
如果可能请告诉我。我想使用来自 c 的例程,它带有一个参数(struct)。最终该结构拥有一个回调函数。
-
请注意,Rebol 类型与 C 类型之间存在“一对多”映射。例如,C 回调可能需要
int或short...。如果您只说 INTEGER! ,则不可能自动知道哪个是预期的。这就是为什么常规!存在,并且它不能(安全地)仅从 FUNC 定义中做出自动假设……您必须描述低级类型是什么。另外需要注意的是,按值传递的 C 结构在 C 中没有正式定义。另见 this Q&A。