如何在 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("%d\n",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。
Or size_t len = lua_rawlen(L,1);
对于 lua 5.2。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)