2011-06-22 76 views

回答

15

是的。

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之前和呼叫後找出堆棧的頂部。

+0

謝謝!對於像我這樣的其他人來說,錯誤地忽略了細節:上面的(正確的)示例使用'luaL_loadstring' *在棧上推送一個函數*,如果函數已經存在了(就像我的情況那樣)結果將需要一個+1,否則你最終會得到錯誤的結果數量(就像我的情況一樣)。 – Rick77