如何创建一个接受lua中多个参数的C函数?
如何知道从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堆
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;ival
未声明,也不是真正需要的。@lhf同意。我已将其删除。但一般来说,对于此类问题,欢迎您修复代码(如果您有足够高的声誉)