所以我目前正在将一个从Rebol 3迁移到Red的下降大小的程序.所述程序依赖于对C库(clang)的大型绑定.我已经重写了Red/System中的绑定部分,并通过包装器例程将该代码与Red连接起来.我一直使用的当前约定是将指针和void指针作为参数进行转换,并由C代码返回到红色/系统整数,并将它们作为红色整数加入.这非常简单方便.
因为我只能访问原始整数!数据而不是实际的结构,我怀疑我不能再使用上述方法通过参数传回指针(因为盒装数据在被传递之前被复制).
那么,是否有推荐的方法通过参数传递指针,又如何通过引用传递给例程?
twiddle: routine [
arg [integer!]
return: [integer!]
] [
arg: 321
test: declare struct! [
dummy [integer!]
]
test/dummy: 456
as integer! test
]
a: 123
b: twiddle a
print a ;If I could pass by reference this would be 321
print b
Run Code Online (Sandbox Code Playgroud)