7

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 バイトを置いて、ここにポインタを置いてください」と言う簡単な方法は非常に便利です。

4

2 に答える 2