【问题标题】:How can I know return value count of a Lua function from C?如何从 C 中知道 Lua 函数的返回值计数?
【发布时间】:2011-06-22 11:40:12
【问题描述】:
luaL_loadstring(L, "return 3, 4, 5");
int R       =   lua_pcall(L, 0, 3, 0);

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

【问题讨论】:

    标签: dynamic count lua runtime return-value


    【解决方案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 找出调用前后的栈顶。

    【讨论】:

    • 谢谢!只是对像我这样犯了遗漏细节错误的其他人的评论:上面的(正确)示例使用luaL_loadstring 将函数推入堆栈,如果该函数已经存在(如在我的情况下)nresults 将需要 +1,否则您最终会得到错误数量的结果(如我的情况......)。
    猜你喜欢
    • 2013-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-30
    • 2018-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多