lua5.1和lua5.2之间的差异.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
lua5.1和lua5.2之间的差异

1. luaL_register 2 luaL_setfuncslua5.1 之中有一个luaL_register,用于把luaL_Reg 数组中的所有函数注册到lua中。但在lua5.2中已经不支持这一函数了,lua5.2的手册中建议使用luaL_setfuncs来替代luaL_register.使用如下。[cpp]view plaincopyprint?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?????}??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源马。2. LUA_GLOBALINDEX 2 registry LUA_RIDX_GLOBAS在5.1中经常会把一些C函数注册在LUA_GLOBALINDEX 全局table中。e.g.lua_pushstring(L, name)lua_pushcfunction(L, func)lua_settable(L, LUA_GLOBALSINDEX);在5.2中已经移除了LUA_GLOBALSINDEX,去而带之的是注册表。在5.1中lua_setglobal() 和 lua_getgloba() 都用是LUA_GLOBALINDEX 伪索引。在5.2中上面两个函数都是使用的注册标中的LUA_RIDX_GLOBAS伪索引(索引注册表的全局环境)LUA_RIDX_GLOBAS是LUA state 注册表中与定义的两个值之一。另一个是LUA_RIDX_MAINTHREAD 索引的是lua state的主线程状态。3. luaL_getn 2 lua_objlen 2 lua_rawlen5.0-5.1-5.2都是得到一个table的大小和#table的值相等,或一个userdata (lua 为指定的userdata分配的原始内存大小,或一个string的长度。都与其他类型,返回0还没有写完。。。有时间补充

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档