如何在C中获得Lua表的大小?
static int lstage_build_polling_table (lua_State * L) { lua_settop(L, 1); luaL_checktype(L, 1, LUA_TTABLE); lua_objlen(L,1); int len = lua_tointeger(L,1); printf("%dn",len); ... }
我的Lua代码:
local stages = {} stages[1] = stage1 stages[2] = stage2 stages[3] = stage3 lstage.buildpollingtable(stages)
它总是打印0。 我究竟做错了什么?
lua_objlen
返回对象的长度,它不会在堆栈上推送任何内容。
即使它确实在堆栈上推送了一些内容,你的lua_tointeger
调用正在使用表的索引,而不是lua_objlen
在堆栈上推送的任何东西(如果它首先推送任何东西,它不会。)
你想要size_t len = lua_objlen(L,1);
对于lua 5.1。
或者size_t len = lua_rawlen(L,1);
对于lua 5.2。
在你给出的代码中,只需用lua_objlen(L,1)
替换lua_len(L,1)
。
lua_objlen
和lua_rawlen
返回长度,不要将它留在堆栈上。
lua_len
什么lua_len
返回,留下堆栈的长度; 它也尊重metamethods。
以上就是c/c++开发分享在C中获取Lua表大小相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/545785.html