ルアを学習しようとしていますが、ここで立ち往生しているようです。
何らかの理由で、次のコードは実際には 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