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

allocator - 在 Zig lang 中分配通用结构

是否可以为struct包含类型作为属性创建分配?

例如

示例结构是

然后,我想分配内存,例如2*Content

我知道我可以使用

但是如何使用它们来实现相同的目标allocators

这行不通。

我收到错误

简而言之

是否可以为BoxRust 中的类似功能构建功能?

0 投票
1 回答
77 浏览

zig - Slice 在 zig 语言中引用超出范围的数据

下面的 get 函数在我看来就像它返回一个引用数组中数据的切片,一旦函数返回,它将超出范围,因此是错误的。假设这是真的,有没有办法在编译时甚至在调试模式下运行时检测到这一点?

我找不到在编译时或运行时检测到此错误的任何编译器标志,并想知道我是否错过了任何可以提供帮助的东西,或者这不是 zig 目前可以检测到的东西,这很好,我只是必须更加小心:)

这是我遇到的一个实际问题的简化示例,需要一些时间来诊断以证明问题

0 投票
1 回答
40 浏览

unix - 编译器将打印版本但在构建时冻结

我正在尝试遵循本教程。我从 2016 年开始在 13" Macbook pro 上运行 MacOS Catalina, 10.15.3 。我从这里下载了Mac 的最新版本。我解压缩了文件,并移动了 zig 可执行文件(但不是文件夹)到 usr/local/bin 以便我可以从任何地方调用它。现在,无论我在哪里运行它,我都可以调用zig version并按预期获取输出0.6.0+352976ed2。但是,每当我尝试类似的东西zig run main.zig或者zig build main.zig它只是冻结并且什么都不做。

现在教程确实说它不支持 zig 0.6.0。但我假设这仍然有效,并且教程更多地指的是当它说它不支持 0.6.0 时更改打印方式之类的事情。显然这可能是一个不正确的假设,但我不知道为什么这不起作用。由于 zig 还年轻,缺乏入门教程,所以我不知道该去哪里找。

我之前已经让 zig 0.6.0 与 homebrew 一起工作,但是由于我可能正在考虑贡献或尝试编译器的实验分支,我希望能够运行任意 zig 可执行文件。

0 投票
1 回答
971 浏览

zig - zig 创建一个 C 库

已关闭- 见条目末尾

我想使用 zig 语言制作一个 C 可调用库。我决定从 Zig 文档中的两个示例开始。“导出 C 库”和“混合目标文件”。在每种情况下,我都复制了三个相关文件(来自 0.6.0 文档)。

  • 名为 test.c 的 AC 文件,
  • 一个 zig 文件,分别称为 mathtest.zig(用于导出 C 库示例)和 base64.zig(用于混合对象文件示例),以及
  • 一个 build.zig 文件。

这两个示例都无法构建。

导出 C 库示例无法编译 test.c 并显示消息找不到 mathtest.h

混合对象文件示例无法编译 test.c 并找不到 base64.h

以下是导出 C 库示例的三个文件:

数学测试.zig

测试.c

构建.zig

部分错误信息

我找不到mathtest.h在我的系统上命名的文件,所以我认为它没有生成,这与 test.c 文件中的声明相反。

我错过了什么?帮助感激地接受了。

答案和更多问题

我发现了以下-femit-h选项:

将创建一个mathtest.h文件,然后

会成功的。

我进一步发现build.zig文件中的这些行

将确保

如文档中所示,将成功并生成答案 1379。

但是 - build.zig 文件的这个 mod 在运行后不会留下mathtest.h文件。

这似乎是从 Zig 代码生成可用 C 库的最后障碍。

拼图中的最后一块

如果我添加

build.zig文件。和mathtest.hlibmathtest.a或 .so)文件将保存到build目录中。

称这为关闭

0 投票
1 回答
358 浏览

arrays - 如何创建任意大小的多维数组?

我正在用 Zig 编写一个函数,它应该接受任意大小的多维数组。可能有限制,但我无法提前对尺寸进行硬编码。

这是一个例子:

这会编译并运行,但如果我将函数签名更改为

我收到错误

这可以用 Zig 表达吗?

0 投票
1 回答
276 浏览

segmentation-fault - 使用带有 Zig 的 X11 C 库时出现分段错误

我正在尝试将 X11 与 Zig 一起使用。以https://rosettacode.org/wiki/Window_creation/X11#Xlib中的代码为例,我想出了这个最小的例子:

使用最新版本的 Zig (0.6.0) 编译:

在执行时,我收到以下错误:

0 投票
2 回答
378 浏览

zig - 为什么zig中的用户定义类型需要是const?

如果我需要在 Zig 中声明一个结构,我必须在它前面加上一个const

但是它可以以两种方式初始化varconst那么为什么类型声明需要一个常量关键字,而只关心结构的实例是否const存在呢?

0 投票
1 回答
1576 浏览

zig - 为什么字符串数组需要中缀 const?

我正在慢慢学习 zig,但我不了解 const 以及它如何与数组/类型交互 - 我正在浏览https://ziglang.org/documentation/0.6.0/#Introduction 但他们经常使用 const字符串。

这编译:

没有const是一个错误:

同样,将 const 放在左侧也是同样的错误:

将 const 关键字放在中间实际上指示编译器执行的操作是什么?

0 投票
1 回答
675 浏览

unicode - 如何在 Zig 中打印 UTF-16 字符串?

我一直在尝试编写一个 UTF-16 字符串结构,虽然标准库提供了一个unicode模块,但它似乎没有提供一种方法来打印出u16. 我试过这个:

这输出:

有没有办法在[]u16不将其转换回非 unicode 字符串 () 的情况下打印 unicode 字符串 ( []u8)?

0 投票
1 回答
239 浏览

struct - 访问 Zig 0.7.0 中 C 函数按值返回的结构

这是我在 Zig 0.7.0 中通过 linux-x86_64 上的 @cImport 导入 Zig 的一些 C 代码。当我直接在 Zig 中创建一个struct Point结构时,它按预期工作,但是当我从getPoint方法中按值返回一个时,有错误的数据(参见下面的“输出”)。我做错了什么,还是这是一个错误?

  • 点.h
  • 点.c
  • 主要的.zig
  • 输出
  • 构建.zig