10
luaL_loadstring(L, "return 3, 4, 5");
int R = lua_pcall(L, 0, 3, 0);
複数の値を返すことができます。しかし、現在私は戻り値の数をハードコードする必要があります。実行時のカウントを動的に知ることはできますか?CからのLua関数の戻り値のカウントを知るにはどうすればよいですか?
luaL_loadstring(L, "return 3, 4, 5");
int R = lua_pcall(L, 0, 3, 0);
複数の値を返すことができます。しかし、現在私は戻り値の数をハードコードする必要があります。実行時のカウントを動的に知ることはできますか?CからのLua関数の戻り値のカウントを知るにはどうすればよいですか?
はい。あなたはLUA_MULTRET
を使用して、呼び出しの前と後のスタックのトップを把握するためにlua_gettop
を使用
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;
。
ありがとうございます!上記の(正しい)サンプルは、もし関数が既に存在するならば、スタック上の関数をプッシュするために 'luaL_loadstring' *を使っています(私の場合のように)nresultsは+1が必要になりますが、あなたは結果の数が間違ってしまうでしょう(私の場合のように...)。 – Rick77