修改lua_tinker以支持lua5.2

来源:互联网 发布:24周胎儿发育正常数据 编辑:程序博客网 时间:2024/05/14 22:26
    由于lua_tinker是在lua5.0的时候开发的,后来作者不知道哪去了,也不维护一下。还好lua5.1对c接口的改动不大,所以lua_tinker可以不作任何修改就可以支持lua5.1。但lua5.2的一项修改是去掉了LUA_GLOBALINDEX这个宏,所以lua_tinker中用到的lua_settable(L, LUA_GLOBALINDEX)和lua_gettable(L, LUA_GLOBALINDEX)就编译出错了。
    修改的办法是用lua_setglobal和lua_getglobal来替换原来的lua_settable和lua_getglobal。比如旧代码:
lua_pushstring(L, name);lua_pushnumber(L, 100);lua_settable(L, LUA_GLOBALINDEX);
    改为:
lua_pushnumber(L, 100);lua_setglobal(L, name);
    之前为什么不用lua_setglobal呢?这是因为lua5.0版本的时候还没有这个接口=,=。

    另外吐槽一下lua5.2把lua_open这个宏去掉了,只能直接使用luaL_newstate接口。这样lua_close就没有对应的open接口了啊,混蛋!下个版本加个lua_delstate的接口吧!

原创粉丝点击