Skip to content
zig 版本:0.14.0

opaque

opaque 类型用于声明一个大小和对齐方式未知(但非零)的新类型。其内部可以像结构体、联合或枚举一样包含声明。

这通常用于与 C 代码交互时,确保类型安全,尤其是在 C 代码没有公开结构体细节的情况下。

zig
const Derp = opaque {};
const Wat = opaque {};

extern fn bar(d: *Derp) void;
fn foo(w: *Wat) callconv(.C) void {
    bar(w);
}

anyopaque

anyopaque 是一个特殊的类型,它可以代表任意一种 opaque 类型(因为每个 opaque 类型根据其内部声明的不同而被视为不同类型)。它常用于与 C 交互的函数中,类似于 C 的 void*,通常用于类型擦除的指针。

🅿️ 提示

需要注意的是,void 的大小为 0 字节,而 anyopaque 的大小未知但非零。

TODO: 添加更多关于该类型使用的示例和说明!