我使用以下代码创建了一个文件
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 时出现不 protected 错误(尝试索引 bool 值)
最佳答案
逐步执行代码,可视化 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 (lua_pop(L, 1)
) 之前将 true
值从堆栈中弹出,或者将堆栈索引调整为 lua_getfield
指向请求表 (lua_getfield(L, -2, "DaysAdd")
)
关于c - 读取文件 lua 时出现紧急错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33533179/