如何从另一个 .zig 文件中包含一个 .zig 文件
How do I include one .zig file from another .zig file
只是探索 Zig...我有一个 .zig 文件,其中包含一堆 comptime 函数和常量,我想在其他 .zig 程序中使用它们。相当于C.
中的#include "my.h"
答案是@import("foo.zig")
几乎做到了这一点。如果你有 foo.zig:
const a = 1;
pub const b = 2;
pub const c = 3;
然后在 main.zig:
const stdout = @import("std").io.getStdOut().writer();
const foo = @import("foo.zig");
const c = foo.c;
const a = foo.a;
test "@import" {
// try stdout.print("a={}\n",.{foo.a});
// try stdout.print("a={}\n",.{a});
try stdout.print("b={}\n",.{foo.b});
try stdout.print("c={}\n",.{c});
}
将打印 b 和 c 的值,但如果您取消对注释行的注释,则会出现错误,因为 a 未导出 (pub
)。有趣的是 const a=foo.a
不会给出错误,除非使用 a
。
似乎无法将所有导入转储到当前名称空间中,因此如果您希望名称不合格,则每个名称都必须有一个 const
行。
感谢 Zig discord 中的人们,特别是@rimuspp 和@kristoff
只是探索 Zig...我有一个 .zig 文件,其中包含一堆 comptime 函数和常量,我想在其他 .zig 程序中使用它们。相当于C.
中的#include "my.h"
答案是@import("foo.zig")
几乎做到了这一点。如果你有 foo.zig:
const a = 1;
pub const b = 2;
pub const c = 3;
然后在 main.zig:
const stdout = @import("std").io.getStdOut().writer();
const foo = @import("foo.zig");
const c = foo.c;
const a = foo.a;
test "@import" {
// try stdout.print("a={}\n",.{foo.a});
// try stdout.print("a={}\n",.{a});
try stdout.print("b={}\n",.{foo.b});
try stdout.print("c={}\n",.{c});
}
将打印 b 和 c 的值,但如果您取消对注释行的注释,则会出现错误,因为 a 未导出 (pub
)。有趣的是 const a=foo.a
不会给出错误,除非使用 a
。
似乎无法将所有导入转储到当前名称空间中,因此如果您希望名称不合格,则每个名称都必须有一个 const
行。
感谢 Zig discord 中的人们,特别是@rimuspp 和@kristoff