Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 卢普考尔在这里干什么?_C_Lua - Fatal编程技术网

C 卢普考尔在这里干什么?

C 卢普考尔在这里干什么?,c,lua,C,Lua,我正在努力学习lua,我似乎被困在这里了 由于某些原因,下面的代码实际上没有运行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,我似乎被困在这里了

由于某些原因,下面的代码实际上没有运行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代码吗?如果不是,为什么

卢阿

width = 500
height = 40
请注意,在代码中:

if(!luaL_loadfile(L, "./src/luaconf.lua") || !lua_pcall(L, 0, 0, 0)) 
如果
LUA_loadfile
成功,它将返回值为
0
LUA_OK
,因此
|
的左操作数计算为
1
,根据短路情况,
LUA_pcall
将不会执行

所以你想要的可能是:

if ((luaL_loadfile(L, "./src/luaconf.lua") || lua_pcall(L, 0, 0, 0))
{
    //error handle
}
else
{
    //normal handle
}

我只是注意到你有不同的“如果陈述”在文档和代码中,我的答案是基于代码的。如果不是这样,请对我的答案进行评论。是的,对此表示抱歉。小错误。代码是正确的,感谢您的回答:如果是这样的话,那么使用
&&
而不是
|
会更好吗?@code思考者如果您选择否定每一个选项用
表示,那么是的,您应该使用
&&