c/c++语言开发共享在C中获取Lua表大小

如何在C中获得Lua表的大小?

static int lstage_build_polling_table (lua_State * L) { lua_settop(L, 1); luaL_checktype(L, 1, LUA_TTABLE); lua_objlen(L,1); int len = lua_tointeger(L,1); printf("%dn",len); ... } 

我的Lua代码:

 local stages = {} stages[1] = stage1 stages[2] = stage2 stages[3] = stage3 lstage.buildpollingtable(stages) 

它总是打印0。 我究竟做错了什么?

    lua_objlen返回对象的长度,它不会在堆栈上推送任何内容。

    即使它确实在堆栈上推送了一些内容,你的lua_tointeger调用正在使用表的索引,而不是lua_objlen在堆栈上推送的任何东西(如果它首先推送任何东西,它不会。)

    你想要size_t len = lua_objlen(L,1); 对于lua 5.1。

    或者size_t len = lua_rawlen(L,1); 对于lua 5.2。

    在你给出的代码中,只需用lua_objlen(L,1)替换lua_len(L,1)

    lua_objlenlua_rawlen返回长度,不要将它留在堆栈上。

    lua_len什么lua_len返回,留下堆栈的长度; 它也尊重metamethods。

      以上就是c/c++开发分享在C中获取Lua表大小相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/545785.html

      (0)
      上一篇 2021年1月10日
      下一篇 2021年1月10日

      精彩推荐