问题标签 [zig]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
207 浏览

zig - Zig:如何处理可选的错误联合类型?(例如,?std.process.NextError![:0]u8)

语境

对语言非常陌生,所以请耐心等待。我正在编写一个超级基本函数来打印出传递给程序的命令行参数。这是关键逻辑:

但是,我收到一条错误消息:

我认为这个问题与NextError返回可选错误联合的事实有关。我不能确定,因为我没有找到任何涵盖这个特定案例的文档。

问题

我通过删除捕获并假装返回类型的错误部分不存在来使此代码工作。但问题是,捕捉该错误的正确方法是什么?

0 投票
1 回答
118 浏览

zig - 如何创建一个空的切片切片

如何在[]const []const u8不使用分配器的情况下构建?

我可以

但肯定有更好的方法。

0 投票
0 回答
74 浏览

c - 可以将 Zig“HellOS”示例作为单个文件移植到 C,而无需 .s 支持文件吗?

https://wiki.osdev.org/Bare_Bones上的 OS 开发 wiki包含使用程序集文件和 C 文件的组合编写非常基本的“Hello World”x86 内核的示例。

https://github.com/andrewrk/HellOS展示了一个类似的项目,但使用 Zig 语言编写在一个文件中。

有没有办法用 C 做同样的事情?Zig 中使用的选项似乎在 gcc 中有一些类似物,例如:

似乎可以翻译成:

和汇编代码的 Zig 等价物:

好像可以变成

但是我无法让这个被接受,即使我使用的 ld 文件与 Zig 示例使用的相同。

这是可行的事情还是我完全在错误的树上吠叫?

(注意:输出内核只需要由 引导qemu --kernel,而不是 GRUB 或任何东西。)

0 投票
1 回答
44 浏览

zig - 如何从第三方模块重新导出函数

我有一个foo.zig有用的模块,但我想在不修改它的情况下增加更多功能,所以我创建foo-wrapper.zig了一个或两个以上功能,并且foo.zig有几十个功能的模块。

如何将pub所有功能重新导出(使用或其他)foo.zig给所有消费者foo-wrapper.zig

0 投票
2 回答
101 浏览

zig - Zig 切片到 void 指针的 C 指针

我有一个 Zig 字节切片,即[]u8,并且 C 依赖项需要 avoid**作为参数。我如何将前者转换为后者?

0 投票
1 回答
50 浏览

zig - 之字形`@ptrToInt()`“错误:无法评估常量表达式”

我正在尝试调用 iotcl 来获得这样的终端大小:

呼吁getTerminalSize成为:

但是,这会产生如下编译器错误:

std/os/linux.zig中,ioctl定义为:

并且std.os.zig有一个类似于我正在尝试做的功能(可能有效):

这是编译器错误,还是我做错了什么?

谢谢!

0 投票
2 回答
146 浏览

zig - 将切片转换为数组

我有一个切片,我保证(在运行时)它的长度至少为 8。我想将该切片转换为一个数组,因为我需要使用std.mem.bytesAsValue()它来从原始字节创建一个f64(对于上下文,我正在实现二进制序列化格式)。

我像这样解决了它,但我想知道是否有更好的语法来实现相同的目标:

0 投票
1 回答
132 浏览

zig - 为什么这个 zig 程序由于“预期的错误联合类型,发现 'error:124:18'”而无法编译?

0 投票
0 回答
73 浏览

zig - 为什么`error.Foo catch {};`编译,error.Foo是错误,而不是错误联合

此代码编译:

但不是:

这是为什么?不catch捕获有效负载是否也会出错?我认为catch只适用于错误联合。

0 投票
2 回答
1793 浏览

zig - 如何创建与文件大小相同的缓冲区?

我想避免设置大小的缓冲区,因为文件太大或足够小以至于缓冲区中有空白空间。ArenaAllocator听起来很有希望,因为您可以根据需要分配更多空间。是否有“正确”的方法来执行此操作,即将作为命令行参数传递的 .json 文件加载到缓冲区中?