读取文件lua时出现紧急错误

时间:2015-11-04 22:20:15

标签: c lua lua-api

我使用以下代码

创建了一个文件
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时出现无保护错误(尝试索引布尔值)

1 个答案:

答案 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>