lua-5.1 和 lua-5.2 之间的一些区别
发布时间:2021-11-23 14:19:30 所属栏目:教程 来源:互联网
导读:1. luaL_register 2 luaL_setfuncs lua5.1 之中有一个luaL_register,用于把luaL_Reg 数组中的所有函数注册到lua中。但在lua5.2中已经不支持这一函数了, lua5.2的手册中建议使用luaL_setfuncs来替代luaL_register. 使用如下。 int luaopen_libname(lua_State
1. luaL_register 2 luaL_setfuncs lua5.1 之中有一个luaL_register,用于把luaL_Reg 数组中的所有函数注册到lua中。但在lua5.2中已经不支持这一函数了, lua5.2的手册中建议使用luaL_setfuncs来替代luaL_register. 使用如下。 int luaopen_libname(lua_State *L) { static const luaL_Reg funcs[] = { {"func1", func1}, {"func2", func2}, {NULL, NULL} }; #ifdef lua5.1 //5.1 下直接使用luaL_register 就好 luaL_register(L, "libname", funcs); #else //lua5.2 lua_newtable(L); //先把一个table压入VS,然后在调用luaL_setfuncs就会把所以的func存到table中 //注意不像luaL_register这个table是个无名table,可以在的使用只用一个变量来存入这个table。 //e.g local clib = require "libname". 这样就不会污染全局环境。比luaL_register更好。 luaL_setfuncs(L, funcs, 0); #endif return 1; //返回table } luaL_register, 和 luaL_setfunc 实现很想,这不过luaL_register会先创建一个全局table在把函数注册到这个table中。 具体实现请参考lua源马。 ![]() (编辑:PHP编程网 - 黄冈站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |