繁体   English   中英

如何使用表类型参数和表类型返回值从Lua调用C函数?

[英]How to call a C Function from Lua with table type argument and table type return value?

我想用C语言实现一个函数,这个函数应该用一个table参数调用,它应该返回一个表类型值。

通常我们使用C实现lua函数,就像代码一样。但是库没有提供luaL_checktable和lua_pushtable,我们能做什么?

static int average(lua_State *L)
{
    int n = lua_gettop(L);
    double sum = 0;
    int i;

    for (i = 1; i <= n; i++)
    {
            sum += lua_tonumber(L, i);
    }


    lua_pushnumber(L, sum / n);
    lua_pushnumber(L, sum);

    return 2;
}

使用luaL_checktype() ,如果是表,它将返回LUA_TTABLE 然后使用lua_getfield()lua_gettable()lua_rawget()从表中提取数据。

编辑:

要创建新表,请使用lua_newtable()并使用lua_setfield()lua_rawset[i]()填充内容。 不要忘记将表格留在堆栈上并返回1。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM