我无法在Zig中使用stdout来初始化全局变量。
然后我尝试在
我的问题是我不知道
我尝试了一些类似的方法:
我也尝试了反思。
我收到一个错误消息:“无法评估编译时表达式”。
var out = std.io.getStdOut().writer();
然后我尝试在
fn main
中进行初始化,并将全局变量声明为可选的(通过null进行初始化)。我的问题是我不知道
std.io.getStdOut().writer();
的类型是什么。我尝试了一些类似的方法:
var out: std.fs.Writer? = null
//...
fn main() !void {
out = std.io.getStdOut().writer();
//...
out.print("ok: {}", "ok");
}
我也尝试了反思。
var stdout: @typeInfo(@TypeOf(std.io.getStdOut().writer())).Fn.return_type.? = null;
我需要知道如何声明一个返回 Writer(即具有常规打印功能的东西)的变量或函数。
已编辑
使用 zig 版本 0.12.0-dev.1150+3c22cecee 和 0.11.0 进行了两次尝试。
使用包含 writer.zig 文件的方式进行。
const std = @import("std");
var out = std.io.getStdOut().writer();
pub fn main() anyerror!void {
try out.print("{any}\n", .{@TypeOf(out)});
}
我收到一个错误消息:“无法评估编译时表达式”。
zig build-exe writer.zig && writer.exe
C:\bin\zig\lib\std\os\windows.zig:1944:28: error: unable to evaluate comptime expression
break :blk asm volatile (
^~~
C:\bin\zig\lib\std\os\windows.zig:1959:15: note: called from here
return teb().ProcessEnvironmentBlock;
~~~^~
C:\bin\zig\lib\std\io.zig:37:30: note: called from here
return os.windows.peb().ProcessParameters.hStdOutput;
~~~~~~~~~~~~~~^~
C:\bin\zig\lib\std\io.zig:51:34: note: called from here
.handle = getStdOutHandle(),
~~~~~~~~~~~~~~~^~
writer.zig:3:27: note: called from here
var out = std.io.getStdOut().writer();
~~~~~~~~~~~~~~~~^~
referenced by:
main: writer.zig:6:9
callMain: C:\bin\zig\lib\std\start.zig:583:32
remaining reference traces hidden; use '-freference-trace' to see all reference traces