我有这个功能:
static int generic_pcall_wrapper(lua_State* L, int (*funct)(lua_State*)){
int narg = lua_gettop(L);
lua_pushcfunction(L, funct);
lua_rotate(L, 1, 1);
int res = lua_pcall(L, narg, LUA_MULTRET, 0);
if(res != 0){
//handle error
}
return ??; // I would like to return 1 as in sum()
}
static int sum(lua_State* L){
int a = lua_tointeger(L, -1);
int b = lua_tointeger(L, -2);
lua_pop(L, 1);
lua_pushnumber(L, a + b);
return 1;
}
static int foo(lua_State* L){
return generic_pcall_wrapper(L, sum);
}
我想让Generic_pcall_wrapper()返回sum()返回的值.
请注意,此函数应该接受许多不同的函数,并且它们如何处理返回值未指定,唯一可靠的值是每个函数返回的数字.