luaL_newlib不同版本的区别
由于cocos2dx-lua是用的lua5.1版本,所以有些lua函数有些不同luaL_newlib
内容如下
int luaopen_libname(lua_State *L)
{
【luaL_newlib不同版本的区别】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
}
#if LUA_VERSION_NUM < 502
#define luaL_newlib(L,l) (lua_newtable(L), luaL_register(L,NULL,l))
#endif
或者
#if (LUA_VERSION_NUM == 501)
#define luaL_setfuncs(L,f,n) luaL_register(L,NULL,f)
#define luaL_newlib(L,f) luaL_register(L,"lpeg",f)
#endif
推荐阅读
- 别墅庭院设计,不同的别墅庭院设计也给人视觉上完全不一样的!
- 2018,不同寻常
- 蓝桥杯试题
- 名校和普校到底有什么不同()
- 不同寻常的书呆子
- 我们每个人都是不同的,你敢这样吗()
- 《三十而已》许幻山和《逆流而上的你》杨光——都是女强男弱,为何走向全然不同
- 如果勇敢一点,也许结局会有不同
- EdgeDB 架构简析
- 单片机|Arduino、arm、树莓派、单片机四者有什么不同()