gpt4 book ai didi

c - 在 C 中获取 Lua 表大小

转载 作者:太空狗 更新时间:2023-10-29 14:54:55 24 4
gpt4 key购买 nike

如何在 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。

或者 size_t len = lua_rawlen(L,1); 用于 lua 5.2。

关于c - 在 C 中获取 Lua 表大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26643285/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com