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

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

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

原文链接 https://stackoverflow.com/questions/6434610

点赞
stackoverflow用户5696
stackoverflow用户5696

是的。

int top = lua_gettop(L); // 获取当前栈的顶部索引
luaL_loadstring(L, "return 3, 4, 5"); // 加载并编译字符串
int R = lua_pcall(L, 0, LUA_MULTRET, 0); // 调用函数,使用LUA_MULTRET作为nresults参数
int nresults = lua_gettop(L) - top; // 计算函数调用之后栈的顶部索引与调用之前的差值,即返回值的个数

你使用了 LUA_MULTRET,然后使用 lua_gettop 函数来确定调用前后栈的顶部索引。

2011-06-22 03:40:12