问题标签 [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.
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 甚至不是有效指令的地址,它们都在一条指令的中间。什么可能导致这种差异?
struct - 在 Zig 中实现一个基本的经典 try-catch
如何try-catch
在 Zig 中实现经典的错误处理?
例如。如何解决此错误并仅append
在没有错误发生时执行?
如果可能,请显示上述代码的修改版本。
unreachable-code - 当程序在 ReleaseFast 上无法访问时会发生什么?(齐郎)
我在 Zig Doc 上读到它有未定义的行为。是吗?是否有任何方法可以预测代码无法访问后的行为?就像它是下一行的处理,或者尝试像无法到达的那样继续下去!
zig - 使用 Zig 进行简单的日志分析
受https://benhoyt.com/writings/count-words/的启发,我尝试了一些用多种语言重写内部日志分析脚本(我不会像文章中那样走得这么远!)。
在 Go(我自己)和 Rust(在 SO 的帮助下)之后,我目前被 Zig 困住了。我或多或少地理解了https://github.com/benhoyt/countwords/blob/master/simple.zig但仍然很难按照这些思路翻译我的原件......值得注意的是,使用带有元组键的哈希,在解析和打印中处理月份的名称......
Python中的原始脚本:
熟悉最近 Zig 的人可以帮忙吗?
非常感谢!
zig - 在 zig 中搜索结构的 ArrayList
我希望这是一个关于如何在 zig 中做好这件事的简单答案的问题。
我想搜索某个结构的 ArrayList 以通过其中一个字段查找记录。
在 C++ 中,我会考虑使用 std::find_if 和 lambda,但 zig 标准库中似乎没有类似的东西,除非我错过了什么。
有没有比下面这样的简单循环更好/更惯用的方法?
libpq - 如何为 PQexecParams 的 paramValues 创建类型 '[*c]const [*c]const u8'
我正在尝试在 zig 中使用 libpq 库。我正在尝试将 paramValues 传递给 PQexecParams。我只是不确定如何创建所需的类型。
文档要求的类型是:
所以像:
如果在 zig 中做这样的事情:
我收到此错误:
zig - 如何读取 zig 中的文件?
如何读取 zig 文件,并逐行运行?
我确实找到了os.File.openRead
,但它似乎很旧,因为它这么说 container 'std.os' has no member called 'File'
。
zig - 具有多个 exe 和库的 zig 项目
我想设置一个构建多个可执行文件和静态库的 zig 项目。这是我想到的结构:
我认为一种方法是在单个 build.zig 中使用类似这样的东西来描述所有这些:
这是一个好方法吗?是否可以在单独的文件中描述 exe 和 lib?在这种情况下,你如何链接它们?
编辑:我想我真的不需要静态库,实际上可以使用包。我猜这会更像曲折。不过,我仍然对静态库方法感兴趣。
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 语句而不是用于分配占位符值的表达式来解决该问题。结果很惨:
我发布这个问题的原因是我并不真正理解第一个实现的问题,我想看看是否有比我想出的更好的解决方案。
zig - std.json.parse 和内存管理
我有以下 zig 代码(简化):
一切都(取消)分配allocator
。
我想退回entries[0]
并回收其他所有东西。问题是parseFree
这里回收了所有东西,包括entries[0]
所以我似乎无法使用这个功能。
那么在不复制的情况下,最有效的方法是什么?如果Entry
是一个大结构并且我只想返回一个它的字段,比如说Entry.name
(并且再次回收其他所有内容)怎么办?