从C API中检查堆栈上的表的Lua代码

我可以找到很多有关如何从 C api 的堆栈中检索 lua 表格的值的信息,但是我遇到了一个有点不同的问题 - 当在没有传递表格的情况下调用我的函数时,我的程序会崩溃,没有任何警告。

这导致我有以下问题,有没有办法从 C api 中检查堆栈上表的存在?类似于 lua_checkstring(L, )?

点赞
用户2194336
用户2194336

在调查 C lua API 期间,我发现了答案。

探查堆栈使用的正确函数是 is 函数,所以我应该使用 lua_isstring(L, offset) 而不是 Lua_checkstring。替代 lua_istable 的函数也是存在的。

正如 siffiejoe 建议的那样,也可以使用 luaL_checktype(L, 1, LUA_TTABLE),不同之处在于检查类型会在解析器中引发错误。

2015-05-01 10:53:03