问题标签 [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.
zig - Zig:如何处理可选的错误联合类型?(例如,?std.process.NextError![:0]u8)
语境
对语言非常陌生,所以请耐心等待。我正在编写一个超级基本函数来打印出传递给程序的命令行参数。这是关键逻辑:
但是,我收到一条错误消息:
我认为这个问题与NextError
返回可选错误联合的事实有关。我不能确定,因为我没有找到任何涵盖这个特定案例的文档。
问题
我通过删除捕获并假装返回类型的错误部分不存在来使此代码工作。但问题是,捕捉该错误的正确方法是什么?
zig - 如何创建一个空的切片切片
如何在[]const []const u8
不使用分配器的情况下构建?
我可以
但肯定有更好的方法。
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 或任何东西。)
zig - 如何从第三方模块重新导出函数
我有一个foo.zig
有用的模块,但我想在不修改它的情况下增加更多功能,所以我创建foo-wrapper.zig
了一个或两个以上功能,并且foo.zig
有几十个功能的模块。
如何将pub
所有功能重新导出(使用或其他)foo.zig
给所有消费者foo-wrapper.zig
?
zig - Zig 切片到 void 指针的 C 指针
我有一个 Zig 字节切片,即[]u8
,并且 C 依赖项需要 avoid**
作为参数。我如何将前者转换为后者?
zig - 之字形`@ptrToInt()`“错误:无法评估常量表达式”
我正在尝试调用 iotcl 来获得这样的终端大小:
呼吁getTerminalSize
成为:
但是,这会产生如下编译器错误:
在std/os/linux.zig
中,ioctl
定义为:
并且std.os.zig
有一个类似于我正在尝试做的功能(可能有效):
这是编译器错误,还是我做错了什么?
谢谢!
zig - 将切片转换为数组
我有一个切片,我保证(在运行时)它的长度至少为 8。我想将该切片转换为一个数组,因为我需要使用std.mem.bytesAsValue()
它来从原始字节创建一个f64
(对于上下文,我正在实现二进制序列化格式)。
我像这样解决了它,但我想知道是否有更好的语法来实现相同的目标:
zig - 为什么`error.Foo catch {};`编译,error.Foo是错误,而不是错误联合
此代码编译:
但不是:
这是为什么?不catch
捕获有效负载是否也会出错?我认为catch
只适用于错误联合。
zig - 如何创建与文件大小相同的缓冲区?
我想避免设置大小的缓冲区,因为文件太大或足够小以至于缓冲区中有空白空间。ArenaAllocator
听起来很有希望,因为您可以根据需要分配更多空间。是否有“正确”的方法来执行此操作,即将作为命令行参数传递的 .json 文件加载到缓冲区中?