CStruct 内でオブジェクトの配列を宣言する方法はありますか?
struct my_struct {
int foo;
int bar;
char somestring[80];
};
class My::Struct is repr('CStruct') {
has int32 $.foo;
has int32 $.bar;
???
}
ACArray[uint8]
はchar *
ポインターであり、実際には構造体内のスペースを予約していません。
の代わりにMy::Struct.new
、おそらく自分でメモリを作成できます ( の代わりにMy::Struct.new()
、a を使用しbuf8.allocate(xxx)
てハンドルを保持し、GC がそれを取得しないようにします。nativecast
それを My::Struct にします)。次に、ポインター演算を使用して内部の文字列を見つける必要があります。構造体などですが、もっと簡単な方法があるはずです。
完全に実装されていなくても、「ここに 80 バイトを置いて、ここにポインタを置いてください」と言う簡単な方法は非常に便利です。