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

c - Zig“翻译c”不翻译主要功能

我创建了一个 C 文件:

我使用 Zig 的translate-c命令行选项生成一个 zig 文件,我只得到一些全局变量声明,如

并且没有main找到函数。但是,如果我将函数名称更改为myFunction这样:

当我重新生成它时会出现一个函数:

我错过了什么吗?zigtranslate-c函数的规则是什么?

0 投票
2 回答
1048 浏览

c - 如何生成 256 位掩码

我有一个 uint64_t[4] 数组,我需要生成一个掩码,这样数组,如果它是一个 256 位整数,则等于 (1 << w) - 1,其中 w 从 1 变为 256。

我想出的最好的东西是无分支的,但它需要很多指令。它在 Zig 中,因为 Clang 似乎没有暴露 llvm 的饱和减法。http://localhost:10240/z/g8h1rV

有一个更好的方法吗?

0 投票
1 回答
185 浏览

zig - 预期类型 ?extern fn

我不知道任何 C 或 Zig。但我正在尝试一些东西,到目前为止我真的印象深刻。我正在尝试使用 C 库“lwan”在 Zig 中运行 Web 服务器。有用。但是我在制作处理程序函数时遇到了一些麻烦。

所以我猜我的处理函数的类型是错误的。这是我的处理程序:

如何将其更改为“?extern fn”类型?

我什至不确定我在做我应该做的事情。如果这不是 Zig 的目的,请告诉我。

还有一件事:lwan 使用以下代码创建处理程序:

然后使用它来传递处理程序:

0 投票
1 回答
184 浏览

templates - 在哪些编程语言中,类型被视为值?

Zig 编程语言提倡“类型就是值”的概念,这对我来说似乎是一个非常强大的概念,我想知道还有哪些其他编程语言支持这个概念。

我知道例如 C++ 模板可用于将类型传递给函数,但类型仍然与 C++ 中的值不同。

0 投票
1 回答
1547 浏览

windows - 使用 Zig 编译器构建 c 代码时如何包含 (msvc) libc

我最近发现了 zig,发现它非常有趣。我现在正在尝试学习如何使用 zig 作为交叉编译器,并且以下构建和运行良好(在 Windows 上)

但是,当我使用 build-exe 命令或构建脚本时,无法找到和链接 (Windows) libc

如果我能看到 zig cc 的真正作用,也许我可以弄清楚(但 zig cc 似乎不允许 --verbose-cc 标志)。或者我怎样才能让 zig 与 Windows 上的 msvc(或任何其他工作的 libc)链接?为了完整起见, build.zig 脚本实际上是:

0 投票
0 回答
153 浏览

linker - 在调试部分周围添加符号会导致二进制文件的大小增加三倍

我想在每个调试信息部分周围添加一个开始和结束符号,以便我可以从我的程序中访问它们。我尝试了以下方案:

但这会导致每个部分(包括 .text、.rodata 等)和生成的二进制文件的大小增加三倍。这可能是什么原因造成的?正如您从下面的转储中看到的,调试信息包含在这两种情况下,因此这不是导致大小增加的原因。

我正在使用 Zig 和 LLVM 工具链。

链接到整个链接脚本。链接到没有链接脚本修改的二进制转储,链接到带有修改的转储。

0 投票
1 回答
790 浏览

arraylist - 在 Zig 中更改数组列表中的值

菜鸟问题:

我想改变数组列表中存在的值。我最初尝试只抓取索引项并直接更改其字段值。

然而,结果出乎我的意料:

我原以为arr.items[0]现在等于Foo{ .foo = 2 }.

这可能是因为我误解了切片。

a指向与 ? 相同的内存arr.items[0]

是否arr.items[0]返回指向复制项目的指针?

0 投票
1 回答
1048 浏览

zig - Malloc 到 Zig 中的结构列表?

如何动态分配内存空间并获取指向 Zig 中结构列表的指针。

就像在 C 中一样:

0 投票
2 回答
888 浏览

zig - zig(zig 语言)中的类型生成

是否可以comptime在 zig 中创建一个会生成新结构类型的函数?该函数将接收一个字符串数组和一个类型数组。字符串是后续结构字段的名称。

0 投票
0 回答
369 浏览

opengl - OpenGL顶点数组对象无法绑定顶点缓冲区

我正在通过https://learnopengl.com/学习 OpenGL 。从该站点以及我在尝试解决此问题时在互联网上的研究中,我了解到顶点数组对象很有用,因为您可以将其与glBindVertexArray, 和

  1. 将设置任何关联的属性。
  2. 绑定到 GL_ARRAY_BUFFER 的缓冲区将被自动绑定。
  3. 关联的 GL_ELEMENT_ARRAY_BUFFER 也将被自动绑定。

因此,我希望下面的设置代码设置两个顶点数组对象,每个对象都有自己的数组缓冲区,当绑定顶点数组对象时,它们会自动绑定。请注意,这本质上是相同代码的两个副本。此外,这是 Zig 的代码片段,与 C 非常相似。

我有一个绘制矩形的功能:

如果我显式调用glBindBufferafter glBindVertexArray,那么该函数就可以正常工作,但如果我删除它,那么我会得到GL_INVALID_OPERATION in glBufferData(no buffer bound). 但是,我希望glBindVertexArray调用绑定适当的缓冲区。

帮助!