• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

lua在C/C++中使用table生成对应键及值

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

 

    int nTop = lua_gettop(L);        // 栈内初始数,假设当前为0

    lua_newtable(L);                // push table

    lua_pushstring(L,"Line");        // push key "Line"
    lua_pushcfunction(L, Line);        // push value (function)Line;    // int Line(lua_State* pLua)
        // 当前栈值对应类型: table(-3),string(-2),function(-1)
    lua_settable(L,-3);                // table["Line"] = Line, pop key(-2) & value(-1)
        // 当前栈值对应类型: table(-1)

    lua_pushstring(L, "Circle");    // push key "Circle"
    lua_pushcfunction(L, Circle);    // push value (function)Circle;    // int Circle(lua_State* pLua)
    lua_settable(L, -3);            // table["Circle"] = Circle, pop key & value, pop key(-2) & value(-1)
        
    lua_setglobal(L,"Draw");        // 设置table(stack top)为全局变量,表名为Draw, 同时 pop stacktop
        // 当前栈为空

    lua_settop(L,nTop);                // 设置栈顶为初始数

    lua_dostring(L,"Draw.Line(100,50,34,34)");  //lua调用C/C++中的Line函数.   全局变量Draw(table),key("Line")对应的函数(int Line(lua_State* pLua)),100,50,34,34,依次push入栈

 

  

// 查看lua栈内容
void
stackDump(lua_State* L) {
  
int top = lua_gettop(L);
  for (int i = 1; i <= top; ++i) { int t = lua_type(L, i); switch (t) { case LUA_TSTRING: printf("'%s'", lua_tostring(L, i));break; case LUA_TBOOLEAN: printf(lua_toboolean(L, i) ? "true" : "false");break; case LUA_TNUMBER: printf("'%g'", lua_tonumber(L, i));break; default: printf("'%s'", lua_typename(L, t));break; } printf(" "); } printf("\n"); }

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
cocosluacompile加密lua文件发布时间:2022-07-22
下一篇:
【原创】lua函数--克隆函数clone()发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap