移植到Lua 5.2,LUA_GLOBALSINDEX麻烦

Jam*_*rey 6 lua lua-5.2

在代码示例中:http://lua-users.org/wiki/SimplerCppBinding

有代码:

lua_pushstring(L, T::className);
lua_pushvalue(L, methods);
lua_settable(L, LUA_GLOBALSINDEX);  //<--- LUA_GLOBALSINDEX removed in Lua 5.2

lua_pushliteral(L, "__metatable");
lua_pushvalue(L, methods);
lua_settable(L, metatable); 
Run Code Online (Sandbox Code Playgroud)

在Lua 5.2中,LUA_GLOBALSINDEX不再存在.相反,它有lua_setglobal()和lua_getglobal().


我是否正确地认为:

lua_pushvalue(L, methods);
lua_setglobal(L, T::className);
Run Code Online (Sandbox Code Playgroud)

...是正确的替代品:

lua_pushstring(L, T::className);
lua_pushvalue(L, methods);
lua_settable(L, LUA_GLOBALSINDEX);
Run Code Online (Sandbox Code Playgroud)

我对Lua太新了,确定,我已经8个月没用了.看一下文档,我认为这是正确的,但是想要验证.

lhf*_*lhf 5

而不是lua_settable(L,LUA_GLOBALSINDEX);使用lua_setglobal(L,T::className);. 这适用于 Lua 5.1 和 5.2。