c调用lua函数,返回值在stack.Need我弹出它?

时间:2017-09-05 07:53:26

标签: lua

  1. 一个lua函数返回两个数字
  2. c ++调用lua函数:foo
  3. 我不知道是否需要弹出函数foo的返回值( lua_pop(L,2); )。
  4. 请告诉我该怎么做以及为什么。非常感谢。
  5. 部分代码如下:

    // lua function
    function foo(a, b)
        return a+b, a-b;
    end
    
    // c++
    
    lua_getglobal(L,"foo"); // push function
    lua_pushnumber(L,1);    // push argument 1
    lua_pushnumber(L,2);    // push argument 2
    
    error=lua_pcall(L, 2, 2, 0);
    
    if (!error) {
        printf("return:%s\n",lua_tostring(L,-1));
        printf("return:%s\n",lua_tostring(L,-2));
        // is this needful
        lua_pop(L,2);
    }
    

1 个答案:

答案 0 :(得分:1)

如果使用相同的lua_State调用更多函数,则应始终尝试将堆栈保持在已知状态。如果将结果保留在堆栈上并进行更多调用,最终将填满可用的堆栈空间。

所以是的,你应该在使用它们的值后从堆栈中弹出2个结果。