只是在探索Zig..。我有一个带有复时间函数和常量的.zig文件,我想在其他.zig程序中使用这些函数和常量。相当于C中的#include "my.h"。
发布于 2022-02-21 13:16:16
答案是@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行。
多亏了齐格人的不和,特别是里姆普和克里斯多夫
发布于 2022-12-01 17:35:05
您实际上可以使用:
const bar = struct {
usingnamespace @import("foo.zig");
};将完整的命名空间导入到结构中,但不导入顶层。
https://stackoverflow.com/questions/71186556
复制相似问题