Skip to main content
Struct 定义 C 结构体的内存布局,支持序列化/反序列化,可与 ffi.ptr 配合传递给 C 函数。

示例

Struct()

StructSchema

size

结构体总大小(字节),包含对齐填充。

create()

将对象序列化为 ArrayBuffer。嵌套结构体字段传入其 create() 返回的 ArrayBuffer

fromPtr()

从原始指针读取结构体数据。基本类型字段返回数值,嵌套结构体字段返回指针(该子结构体在内存中的起始地址),需通过子结构体的 fromPtr 进一步读取。

get() / set()

getset 仅支持基本类型字段,嵌套结构体字段返回 0 / 不操作。

嵌套结构体

字段值可以是另一个 StructSchema,递归计算布局。

dlopen 配合(HFA 结构体传参)

对于在寄存器中传递的小型 HFA 结构体,可直接将 StructSchema 用作 dlopenargs / returns
结构体作为参数时自动展开为字段值传入寄存器;作为返回值时自动分配 buffer,返回 buffer 的指针。该指针在本次调用后有效,通过 fromPtr 同步读取。

ARM64 对齐规则

嵌套结构体的对齐取其所有子字段对齐的最大值。

与 C 函数配合