Как узнать количество возвращаемых значений функции Lua из C?

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

Lua может возвращать несколько значений. Но в настоящее время мне приходится жестко указывать количество возвращаемых значений. Могу ли я узнать счет во время выполнения динамически?

Ответ 1

Да.

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 для определения верхней части стека до и после вызова.