我使用以下代码
创建了一个文件Request = {
TimeAdd = true;
DaysAdd = true;
};
源代码在C
中生成 lua_getglobal(L, "Request")
lua_getfield(L, -1, "TimeAdd");
time_request = lua_toboolean(L, -1);
lua_getfield(L, -1, "DaysAdd");
data_request = lua_toboolean(L, -1);
我正在编写程序通常更多它发生错误lua
LUA PANIC:调用Lua API时出现无保护错误(尝试索引布尔值)
答案 0 :(得分:2)
逐步执行代码,随时可视化Lua堆栈,错误将变得明显。
lua_getglobal(L, "Request"); // Stack: [] -> [(Request table)]
lua_getfield(L, -1, "TimeAdd"); // [>(Request table)<] -> [(Request table), true]
time_request = lua_toboolean(L, -1); // [(Request table), >true<]
lua_getfield(L, -1, "DaysAdd"); // [(Request table), >true<] ERROR: Cannot index `true`
当您致电lua_getfield(L, -1, "DaysAdd")
时,堆栈顶部的值为true
,不可转位。
在获取DaysAdd(true
)之前从堆栈中弹出lua_pop(L, 1)
值或将堆栈索引调整为lua_getfield
以指向Request表(lua_getfield(L, -2, "DaysAdd")
)< / p>