从C 调用Lua函数是相当简单的,但有没有办法将 Lua函数存储在某个地方供以后使用?我想存储传递给我的C函数的用户定义的Lua函数以用于事件,类似于connect函数在wxLua中的工作方式.
检查注册表(luaL_ref()
).它管理一个简单的表,允许您存储任何Lua值(如函数),并通过一个简单的整数从C引用它.
基于Javier的答案,Lua有一个特殊的通用访问表,称为注册表,可以使用伪索引通过C API访问LUA_REGISTRYINDEX
.您可以使用该luaL_ref
函数在注册表中存储您喜欢的任何Lua值(包括Lua函数)并接收一个可用于从C引用它的整数:
// Assumes that the function you want to store is on the top of stack L int function_index = luaL_ref(L, LUA_REGISTRYINDEX);