gpt4 book ai didi

c - 如何从关键字 Zig 引用 C 符号?

转载 作者:行者123 更新时间:2023-12-05 03:20:18 25 4
gpt4 key购买 nike

我想从 Zig 调用 error(3) 函数。

我可以通过定义一个名称不是 Zig 关键字的新符号来做到这一点:

@cInclude("error.h");
@cDefine("_error", "error");

这是执行此操作的推荐方法,还是有不同的方法来获取名称 error,因为 c.error 显然不起作用?

最佳答案

引自 Identifiers

Identifiers [...] must not overlap with any keywords. [...]If a name that does not fit these requirements is needed, [...] the @"" syntax may be used.

// example.zig
// run with `zig run example.zig -lc`

const c = @cImport({
@cInclude("error.h");
});

pub fn main() !void {
// Names inside `@"` `"` are always recognised as identifiers.
_ = c.@"error"(0, 0, "this uses @\"error\"\n");
}

您还可以将 c.@"error" 分配给新函数 c_error 或使用 @cDefine("_error", "error"); 就像你一样:

// alternatives.zig
// run with `zig run alternatives.zig -lc`

const c = @cImport({
@cInclude("error.h");
@cDefine("_error", "error");
});

const c_error = c.@"error";

pub fn main() !void {
_ = c._error(0, 0, "this uses _error\n");
_ = c_error(0, 0, "this uses c_error()\n");
}

关于c - 如何从关键字 Zig 引用 C 符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73210230/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com