部分代码如下:
// 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);
}
答案 0 :(得分:1)
如果使用相同的lua_State调用更多函数,则应始终尝试将堆栈保持在已知状态。如果将结果保留在堆栈上并进行更多调用,最终将填满可用的堆栈空间。
所以是的,你应该在使用它们的值后从堆栈中弹出2个结果。