fn square(x: anytype) @TypeOf(x) {return x * x;}const result = comptime square(2 + 3); // result = 25, at compile-time Zig 编译器的另一个优点是能对输入进行类型检查,即使它是 anytype。当在 Zig 中调用 square 函数时,如果使用了不支持 * 操作符的类型,将导致编译时类型错误:const...
const Person = struct { age: u8};const maybe_p: Person = null; // compile error: expected type 'Person', found '@Type(.Null)'const maybe_p: ?Person = null; // OKstd.debug.print("{}", { maybe_p.age }); // compile error: type '?Person' does not support field accessstd...
Zig 里能直接引入 C 头文件,构建系统能编译 C/C++ 代码、链接现有 C 库。conststd=@import("std"...
以下是 Zig 中的 C SQUARE 宏: fn square(x: anytype) @TypeOf(x) {return x * x; const result = comptime square(2 + 3); // result = 25, at compile-time Zig 编译器的另一个优点是能对输入进行类型检查,即使它是 anytype。当在 Zig 中调用 square 函数时,如果使用了不支持 * 操作符的...
Lazily compile thezig rcsubcommand and use it duringzig build-exe, etc#19174 Merged andrewrkmerged 7 commits intoziglang:masterfromsqueek502:lazy-resinator Mar 12, 2024 Conversation17Commits7Checks10Files changed Copy link Collaborator squeek502commentedMar 4, 2024• ...
显然 C 语言标准中不存在上述等价的功能;至于 C++ ,我不敢说不可能,但用模板元编程计算校验和有多...
然而,Zig 采用了一种更直观的方法来处理此类任务,引入了comptime参数和函数。这使我们能够在编译时执行函数,而不是运行时。以下是 Zig 中的 CSQUARE宏: fn square(x: anytype)@TypeOf(x){returnx * x;} constresult = comptime square(2+3);// result = 25, at compile-time ...
b.addExecutable:创建一个Build.Step.Compile并返回对应的指针,其参数为std.Build.ExecutableOptions。 b.path:该函数用于指定获取当前项目的源文件路径,请勿手动为root_source_file赋值! ::: info🅿️提示 标准构建会产生两个目录,一个是zig-cache、一个是zig-out,第一个是缓存目录(这有助于加快下次构建),第...
另一方面,Zig通过引入参数和函数,为这类任务采用了更加直观的方法。这使我们能够在编译时而不是运行时执行函数。下面是同一个C语言宏在Zig: comptimesSQUARE中 fn square(x: anytype) @TypeOf(x) { return x * x; } const result = comptime square(2 + 3); // result = 25, at compile-time ...
就像GNU C 一样,默认情况下,Zig 会为当前目标(CPU 和操作系统)生成二进制文件,因此上述命令在我的计算机上为我生成了 x86Linux二进制文件。此外,可以使用 -target 标志进行交叉编译二进制文件。 例如,以下命令会为 x64Windows系统交叉编译一个 .exe 文件: ...