修改lua_tinker以支持lua5.2

    由於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的接口吧!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章