小编ice*_*w19的帖子

在红色例程中通过引用传递

所以我目前正在将一个从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)

red red-system

4
推荐指数
1
解决办法
153
查看次数

标签 统计

red ×1

red-system ×1