我可以找到很多关于如何从 C api 中的堆栈中检索 lua 中表的值的信息,但是我遇到了一些不同的问题 - 当我的函数在没有表传递的情况下被调用时,我的程序崩溃了,没有任何警告。
这引出了以下问题,有没有办法从 C api 检查堆栈上表是否存在?类似于 lua_checkstring(L, )?
最佳答案
我在调查 C lua API 时自己找到了答案。
用于调查堆栈的正确函数是 is 函数,因此我应该使用 lua_isstring(L, offset) 而不是 Lua_checkstring。 lua_istable 的替代方案是存在的。
正如 siffiejoe 所建议的,也可以使用 luaL_checktype(L, 1, LUA_TTABLE),不同之处在于检查类型会在解析器中引发错误。
关于c - lua从c api检查堆栈上的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29985495/