如何复制Fiddle结构的示例并不明显。我发现了一个丑陋的解决方案,使用Fiddle::Pointer
像这样。
require 'fiddle/import'
X = Fiddle::Importer.struct [
'int a',
'int b',
]
x = X.malloc
x.a = 1
x.b = 2
x2 = X.malloc
Fiddle::Pointer.new(x2.to_i)[0, X.size] = x.to_ptr.to_s
x2.b = 3
p [x.b, x2.b]
字符串
有没有更好的办法?我想到的另一种方法是使用x2.to_ptr
的超类(Fiddle::Pointer
)的[]=
操作符,但它比上面的解决方案更糟糕。
1条答案
按热度按时间wqsoz72f1#
Fiddle::Importer.struct
返回的类实现了[]
和[]=
,以按名称检索和设置结构体成员:字符串
但是,当使用2个参数调用时,这些方法的行为与
Fiddle::Pointer
方法类似,并获取/设置原始二进制数据:型
要将
x
的整个数据复制到x2
,请执行以下操作:型