如何在 Zig 中投射指针

问题描述 投票:0回答:1

我正在尝试用 Zig 重写一个 Hello 三角形,但是我遇到了一个小问题。我无法使用指针强制转换。

fn framebufferResizeCallback(window: ?*cInclude.GLFWwindow, _: c_int, _: c_int) callconv(.C) void {
    var app = @as(*HelloTriangleApplication, cInclude.glfwGetWindowUserPointer(window));
    app.framebufferResized = true;
}

我该如何解决这个问题?

glfw zig
1个回答
1
投票

@as
用于类型强制。要进行指针转换,您需要使用
@ptrCast
。例如:

var app: *HelloTriangleApplication = @ptrCast(glfwGetWindowUserPointer(the_window));

var app = @as(*HelloTriangleApplication, @ptrCast(glfwGetWindowUserPointer(the_window)));
© www.soinside.com 2019 - 2024. All rights reserved.