c-读取文件lua时出现恐慌性错误



我创建了一个文件,代码为

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时出现未受保护的错误(试图索引布尔值)

逐步执行代码,在执行过程中可视化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")

相关内容

最新更新