Jav*_*ier 26
检查注册表(luaL_ref()).它管理一个简单的表,允许您存储任何Lua值(如函数),并通过一个简单的整数从C引用它.
and*_*ers 14
基于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);
Run Code Online (Sandbox Code Playgroud)