如何从C中知道Lua函数的返回值计数?

时间:2011-06-22 03:32:55

标签: dynamic count lua runtime return-value

luaL_loadstring(L, "return 3, 4, 5");
int R       =   lua_pcall(L, 0, 3, 0);

Lua可以返回多个值。但是目前我必须硬编码返回值的计数。我可以动态地知道运行时的计数吗?

1 个答案:

答案 0 :(得分:18)

int top = lua_gettop(L);
luaL_loadstring(L, "return 3, 4, 5");
int R = lua_pcall(L, 0, LUA_MULTRET, 0);
int nresults = lua_gettop(L) - top;

您使用LUA_MULTRET,然后使用lua_gettop找出通话前后的堆栈顶部。