簡體   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