如何从 Lua 修改 C 结构体?

我想要实现以下 Lua 代码:

function myfunc(s)
    print(s.value)
    s.value = 7
end

它应该能够与以下 C(++) 代码一起工作:

struct MyStruct {
    float value;
};

void func() {
    MyStruct var;
    var.value = 5;

    lua_getglobal(L, "myfunc");
    // push `var` to lua, somehow

    lua_call(L, 1, 0); // prints "5"

    // now, var.value is 7
    assert(var.value == 7);
}

我应该如何将 var 推入堆栈,使得 Lua 代码可以修改它的变量?

点赞