10
luaL_loadstring(L, "return 3, 4, 5");
int R = lua_pcall(L, 0, 3, 0);
Lua可以返回多個值。但目前我必須硬編碼返回值的計數。我可以在動態運行時知道計數嗎?我如何知道C中Lua函數的返回值計數?
luaL_loadstring(L, "return 3, 4, 5");
int R = lua_pcall(L, 0, 3, 0);
Lua可以返回多個值。但目前我必須硬編碼返回值的計數。我可以在動態運行時知道計數嗎?我如何知道C中Lua函數的返回值計數?
是的。
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
之前和呼叫後找出堆棧的頂部。
謝謝!對於像我這樣的其他人來說,錯誤地忽略了細節:上面的(正確的)示例使用'luaL_loadstring' *在棧上推送一個函數*,如果函數已經存在了(就像我的情況那樣)結果將需要一個+1,否則你最終會得到錯誤的結果數量(就像我的情況一樣)。 – Rick77