Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何创建一个接受lua中多个参数的C函数?_C_Lua - Fatal编程技术网

如何创建一个接受lua中多个参数的C函数?

如何创建一个接受lua中多个参数的C函数?,c,lua,C,Lua,如何知道从lua传递给C函数的参数数 下面的方法行吗 int test(lua_State *l) { int result = 0; int n=1; while(!lua_isnil(l,n)) { result = result + lua_tointeger(l, n); ++n } lua_pushnumber(l, result); return 1; } 注:这本质上是一个复活的一个由其所有者,我认为是值得保留 所有参数都被推送到lua堆

如何知道从lua传递给C函数的参数数

下面的方法行吗

int test(lua_State *l) {
  int result = 0;
  int n=1;
  while(!lua_isnil(l,n)) {
    result = result + lua_tointeger(l, n);
    ++n
  }

  lua_pushnumber(l, result);
  return 1;
}

注:这本质上是一个复活的一个由其所有者,我认为是值得保留

所有参数都被推送到lua堆栈中, 因此,您可以通过找出堆栈的初始大小来获得元素的数量。 这样做的调用是
lua\u gettop(L)

因此,您的代码大致如下所示:

int test(lua_State *l)
{
  int result = 0;
  int nargs = lua_gettop(l);
  for(int i=1; i<=nargs; ++i)
  {
    result += lua_tointeger(l, i);;
  }

  lua_pushnumber(l, result);
  return 1;
}
int测试(lua_状态*l)
{
int结果=0;
int nargs=lua_gettop(l);

for(int i=1;i
val
未声明,也不是真正需要的。@lhf同意。我已将其删除。但一般来说,对于此类问题,欢迎您修复代码(如果您有足够高的声誉)