Я пытаюсь изучить Lua, и я, кажется, застрял здесь.Что здесь делает lua_pcall?
По какой-то причине следующий код фактически не запускает файл lua.
int main()
{
lua_State* L = luaL_newstate();
luaL_openlibs(L);
int width = 0;
int height = 0;
if(!luaL_loadfile(L, "./src/luaconf.lua") || !lua_pcall(L, 0, 0, 0))
{
lua_getglobal(L, "width");
lua_getglobal(L, "height");
if(!lua_isnumber(L, -2))
{
luaL_error(L, "width isn't a number");
}
else
{
width = lua_tointeger(L, -2);
}
if(!lua_isnumber(L, -1))
{
luaL_error(L, "height isn't a number");
}
else
{
height = lua_tointeger(L, -1);
}
}
printf("%i x %i", width, height);
return 0;
}
Я знаю, что если я изменю if(!luaL_loadfile(L, "./src/luaconf.lua") || !lua_pcall(L, 0, 0, 0)
к if(luaL_dofile(L, "./src/luaconf.lua"))
он будет работать, но я хочу знать, почему этот код не работает.
Не следует ли lua_pcall запускать код lua? Если нет, то почему?
luaconf.lua
width = 500
height = 40
Я только что заметил, у вас есть разные «если заявление» в документе и в коде, мой ответ основан на коде. Если это не так, прокомментируйте мой ответ. –
Да, извините. Незначительная ошибка. Код правильный и спасибо за ответ: D – benbot