如果lua_pcall返回错误,栈上是否仍然有返回值?

假设我从C中调用返回一个结果的Lua函数。如果它返回一个错误, 那么结果是否仍然在堆栈上?

例如,在下面的代码中,第一个 lua_pop 是否应该存在?

if (lua_pcall(L, nArgs, 1, 0)) {
   lua_pop(L, 1); //是否应该存在?
   DisplayLuaError(L);
   return -1;
} else {
   int x = lua_tonumber(L, -1);
   lua_pop(1);
   return x;
}
点赞