lua-5.1 和 lua-5.2 之间的一些差异

1. luaL_register 2 luaL_setfuncs

lua5.1 之中有一个luaL_register,用于把luaL_Reg 数组中的所有函数注册到lua中。但在lua5.2中已经不支持这一函数了,

lua5.2的手册中建议使用luaL_setfuncs来替代luaL_register.

使用如下。

  1. int luaopen_libname(lua_State *L)  
  2. {  
  3.     static const luaL_Reg funcs[] = {  
  4.     {"func1", func1},  
  5.         {"func2", func2},  
  6.     {NULL, NULL}  
  7.     };  
  8. #ifdef lua5.1   
  9. //5.1 下直接使用luaL_register 就好   
  10.     luaL_register(L, "libname", funcs);  
  11. #else //lua5.2   
  12.     lua_newtable(L);   
  13.     //先把一个table压入VS,然后在调用luaL_setfuncs就会把所以的func存到table中   
  14.     //注意不像luaL_register这个table是个无名table,可以在的使用只用一个变量来存入这个table。   
  15.     //e.g local clib = require "libname". 这样就不会污染全局环境。比luaL_register更好。   
  16.     luaL_setfuncs(L, funcs, 0);  
  17. #endif   
  18.     return 1;  //返回table   
  19.    
  20. }  

luaL_register, 和 luaL_setfunc 实现很想,这不过luaL_register会先创建一个全局table在把函数注册到这个table中。

具体实现请参考lua源马。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值