从Lua C函数返回多个参数

4

我想从C函数中获取Lua中的几个参数。 我尝试将多个参数推送到lua栈上:

static int myFunc(lua_State *state)
{
    lua_pushnumber(state, 1);
    lua_pushnumber(state, 2);
    lua_pushnumber(state, 3);

    return 1;
}

然后在 Lua 中像这样调用:

local a,b,c = myFunc()

不幸的是,b和c的值都为nil。我不想为每个我需要的值编写一个函数,而是要利用Lua从函数中检索多个参数的能力。

1个回答

7
C函数的返回值是返回的值的数量。
将其更改为return 3;,您就可以开始了。
这里有一份来自《Lua编程》的参考资料:
static int l_sin (lua_State *L) {
  double d = lua_tonumber(L, 1);  /* get argument */
  lua_pushnumber(L, sin(d));  /* push result */
  return 1;  /* number of results */
}

哦,谢谢。我以为这只是一个状态,表示函数调用是否正常。 - Objective
2
@目标 我的谦虚建议是下次开始检查引用而不是猜测。 :) - Bartek Banachewicz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接