加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 教程 > 正文

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编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读