c - lua从c api检查堆栈上的表

标签 c lua

我可以找到很多关于如何从 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/

相关文章:

c - fclose() 之后管道 "closing"

从源代码编译 Lua 并用它创建 C 模块

lua - 如何知道客户是否在 Awesome WM 中被杀死

Lua:从字符串中删除一个字符

lua - 如何在 Lua 中将 math.floor 转换为小数?

lua - Lua 中的 "Not start with"模式

c - 指针行为

c - 在getopt中解析 '?'

c - C 中的 "-1L"/"1L"是什么?

c - float 学(5/3 * 2)给出错误的结果