そのため、現在、降下サイズのプログラムを Rebol 3 から Red に移行中です。このプログラムは、C ライブラリ (clang) への大きなバインディングに依存しています。Red/System のバインディング部分を書き直して、ラッパー ルーチンを介してそのコードを Red と接続しています。私が使用している現在の規則は、パラメーターとして必要であり、C コードによって返されるポインターと void ポインターを red/system 整数にキャストし、それらを Red 整数としてボックス化することです。これはかなり簡単で便利です。
生の整数にしかアクセスできないので!実際の構造体の代わりにデータを使用すると、上記の方法論を使用して、パラメーターを介してポインターを戻すことができないと思われます (ボックス化されたデータが渡される前にコピーされるため)。
では、パラメーターを介してポインターを戻すための推奨される方法論はありますか? 別名、ルーチンで参照渡しする方法はありますか?
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