问题标签 [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 回答
99 浏览

arm - 为什么此链接描述文件会产生非一地址?

我正在为 ARM Cortex-M0 微控制器(特别是 STM32F072B 作为 STM32 Discovery 开发板的一部分)编写一些固件代码。

我的链接器脚本没有做任何特别的事情,它只是填写向量表,然后包含我的代码中的所有文本和数据部分:

当我构建和链接一个 ELF 文件并转储符号时,我注意到该.vector_table部分中的地址以及 ELF 入口点都偏离了一个:

符号表显示_start在 0xC4,而在链接描述文件中定义为 的 ELF 入口点_start设置为 0xC5。同样,dummy_isr写入向量表的地址也是减一(dummy_isr符号定义为0xC0,而0xC1由链接器写入向量表)。反汇编.text确认_dummy_isr_start分别从 0xC0 和 0xC4 开始,因此链接器正在写入的地址是错误的:

0xC1 和 0xC5 甚至不是有效指令的地址,它们都在一条指令的中间。什么可能导致这种差异?

0 投票
1 回答
257 浏览

struct - 在 Zig 中实现一个基本的经典 try-catch

如何try-catch在 Zig 中实现经典的错误处理?

例如。如何解决此错误并仅append在没有错误发生时执行?

如果可能,请显示上述代码的修改版本。

0 投票
2 回答
123 浏览

unreachable-code - 当程序在 ReleaseFast 上无法访问时会发生什么?(齐郎)

我在 Zig Doc 上读到它有未定义的行为。是吗?是否有任何方法可以预测代码无法访问后的行为?就像它是下一行的处理,或者尝试像无法到达的那样继续下去!

0 投票
1 回答
137 浏览

zig - 使用 Zig 进行简单的日志分析

https://benhoyt.com/writings/count-words/的启发,我尝试了一些用多种语言重写内部日志分析脚本(我不会像文章中那样走得这么远!)。

在 Go(我自己)和 Rust(在 SO 的帮助下)之后,我目前被 Zig 困住了。我或多或少地理解了https://github.com/benhoyt/countwords/blob/master/simple.zig但仍然很难按照这些思路翻译我的原件......值得注意的是,使用带有元组键的哈希,在解析和打印中处理月份的名称......

Python中的原始脚本:

熟悉最近 Zig 的人可以帮忙吗?

非常感谢!

0 投票
1 回答
222 浏览

zig - 在 zig 中搜索结构的 ArrayList

我希望这是一个关于如何在 zig 中做好这件事的简单答案的问题。

我想搜索某个结构的 ArrayList 以通过其中一个字段查找记录。
在 C++ 中,我会考虑使用 std::find_if 和 lambda,但 zig 标准库中似乎没有类似的东西,除非我错过了什么。

有没有比下面这样的简单循环更好/更惯用的方法?

0 投票
1 回答
137 浏览

libpq - 如何为 PQexecParams 的 paramValues 创建类型 '[*c]const [*c]const u8'

我正在尝试在 zig 中使用 libpq 库。我正在尝试将 paramValues 传递给 PQexecParams。我只是不确定如何创建所需的类型。

文档要求的类型是:

所以像:

如果在 zig 中做这样的事情:

我收到此错误:

0 投票
3 回答
1620 浏览

zig - 如何读取 zig 中的文件?

如何读取 zig 文件,并逐行运行?

我确实找到了os.File.openRead,但它似乎很旧,因为它这么说 container 'std.os' has no member called 'File'

0 投票
1 回答
209 浏览

zig - 具有多个 exe 和库的 zig 项目

我想设置一个构建多个可执行文件和静态库的 zig 项目。这是我想到的结构:

我认为一种方法是在单个 build.zig 中使用类似这样的东西来描述所有这些:

这是一个好方法吗?是否可以在单独的文件中描述 exe 和 lib?在这种情况下,你如何链接它们?

编辑:我想我真的不需要静态库,实际上可以使用包。我猜这会更像曲折。不过,我仍然对静态库方法感兴趣。

0 投票
1 回答
107 浏览

switch-statement - Zig 0.8.0 错误:“(枚举文字)”类型的值必须是已知的 comptime

在 Zig 0.8.0 中,当切换 u8 字符以获取枚举类型时,我在这段代码中遇到了一个奇怪的编译器错误:

错误是:

通常在 zig 中,“ must be comptime known”消息意味着我在运行时值上留下了类型签名,例如const x = 3;. 但是,switch 表达式中没有签名,编译器无论如何都应该知道类型是什么,因为该字段.op_type采用Op类型枚举。

我能够通过使用 switch 语句而不是用于分配占位符值的表达式来解决该问题。结果很惨:

我发布这个问题的原因是我并不真正理解第一个实现的问题,我想看看是否有比我想出的更好的解决方案。

0 投票
1 回答
123 浏览

zig - std.json.parse 和内存管理

我有以下 zig 代码(简化):

一切都(取消)分配allocator

我想退回entries[0]并回收其他所有东西。问题是parseFree这里回收了所有东西,包括entries[0]所以我似乎无法使用这个功能。

那么在不复制的情况下,最有效的方法是什么?如果Entry是一个大结构并且我只想返回一个它的字段,比如说Entry.name(并且再次回收其他所有内容)怎么办?