Oscar Madureira
Oscar Madureira

Reputation: 11

How to cast pointers in Zig

I'm trying to rewrite a program in Zig, but I don't know how to use pointer cast. I tried to use @as, but apparently that's wrong.

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

How can I fix this?

Upvotes: 1

Views: 1805

Answers (1)

sigod
sigod

Reputation: 6486

@as is for type coercion. To do a pointer cast, you need to use @ptrCast. For example:

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

or

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

Upvotes: 3

Related Questions