这里的lua_pcall在做什么?

我正在努力学习Lua,但似乎卡在这里了。

由于某种原因,以下代码实际上不会运行lua文件。

我知道,如果我将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
点赞
用户1009479
用户1009479

请注意,以下代码中:

if(!luaL_loadfile(L, "./src/luaconf.lua") || !lua_pcall(L, 0, 0, 0))

如果 luaL_loadfile 执行成功,它会返回值 LUA_OK,该值为 0,所以 || 的左操作数会被计算为 1,根据短路原则,将不执行 lua_pcall

因此,你可能想要实现的是:

if ((luaL_loadfile(L, "./src/luaconf.lua") || lua_pcall(L, 0, 0, 0))
{
    // 出现错误的处理
}
else
{
    // 正常的处理
}
2013-08-25 12:41:14