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,-); // 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, -); // 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 = ; 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"); }

lua在C/C++中使用table生成对应键及值的更多相关文章

  1. Entity Framework Core 使用HiLo生成主键

    #cnblogs_post_body.cnblogs-markdown p img { max-width: 95%; } HiLo是在NHiernate中生成主键的一种方式,不过现在我们可以在Ent ...

  2. JPA 不生成外键

    在用jpa这种orm框架时,有时我们实体对象存在关联关系,但实际的业务场景可能不需要用jpa来控制数据库创建数据表之间的关联约束,这时我们就需要消除掉数据库表与表之间的外键关联.但jpa在处理建立外键 ...

  3. 【转】ASP.NET中服务器控件Table动态生成表格及其属性介绍

    下文所有内容转自开源中国:http://www.oschina.net/question/565065_86453#tags_nav ================================= ...

  4. Lua中使用table实现的其它5种数据结构

    Lua中使用table实现的其它5种数据结构 lua中的table不是一种简单的数据结构,它可以作为其他数据结构的基础,如:数组,记录,链表,队列等都可以用它来表示. 1.数组 在lua中,table ...

  5. 递归打印lua中的table

    在lua中,table是比较常用的数据形式,有时候为了打印出里面的内容,需要做一些特殊处理. 废话不多讲,直接粘代码: print = release_print -- 递归打印table local ...

  6. lua中遍历table的几种方式比较

    当我在工作中使用lua进行开发时,发现在lua中有4种方式遍历一个table,当然,从本质上来说其实都一样,只是形式不同,这四种方式分别是: for key, value in pairs(tbtes ...

  7. Lua中的table函数库

    table.concat(table, sep,  start, end) concat是concatenate(连锁, 连接)的缩写. table.concat()函数列出参数中指定table的数组 ...

  8. ABAP中的Table Control编程

          SAP中,Table Control是在Screen中用的最广泛的控件之一了,可以实现对多行数据的编辑.       简单来说,Table Control是一组屏幕元素在Screen上的重 ...

  9. (DT系列五)Linux kernel 是怎么将 devicetree中的内容生成plateform_device

    Linux kernel 是怎么将 devicetree中的内容生成plateform_device 1,实现场景(以Versatile Express V2M为例说明其过程)以arch/arm/ma ...

随机推荐

  1. Hdu 1068 最小路径覆盖

    Girls and Boys Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  2. 为什么DW的可视化下看到的效果与浏览器的效果有所区别?

    可视区不是调用外面浏览器,Dreamweav 可视化区是为用户编辑而设计. 支持最基本的 HTML 与 CSS ,对 CSS 而言,我写入样式时如果你使用最基本的样式时它显示与你浏览器中看的效果相差不 ...

  3. 学习JDK1.8集合源码之--Vector

    1. Vector简介 Vector是JDK1.0版本就推出的一个类,和ArrayList一样,继承自AbstractList,实现了List.RandomAccess.Cloneable.java. ...

  4. Python数据分析与展示[第一周]

    ipython 中的问号 获得相关的描述信息 %run 系统文件 执行某一个文件 ipython的模式命令 %magic 显示所有的魔术命令 %hist    命令历史输入信息 %pdb    异常发 ...

  5. 配置了两天python【python可以的】

    首先是看cs231n 发现代码的版本是py2 而我只装了 py3(anaconda3) 怎么办呢 于是想办法装了 anaconda2 并与之共存 ,调用的时候用 activate py2调用 http ...

  6. JasperStudio study..

    https://blog.csdn.net/shiyun123zw/article/details/79166448

  7. 纯CSS3实现Metro Icon

    在线演示 本地下载

  8. 开启远程XUL

    参考:https://developer.mozilla.org/zh-cn/Remote_XUL firefox自4.0起(2011年4月版本,目前最新版为13.0),开始禁用远程XUL,这阻碍了初 ...

  9. assigned before calling save & JPA id生成策略

    撸了今年阿里.网易和美团的面试,我有一个重要发现.......>>> Ⅰ 关于JPA 主键,自定义生成遇到的问题,愚蠢的笔记 Ⅱ 第一次 报错: ids for this class ...

  10. Java练习 SDUT-2787_加密术

    加密术 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 加密技术是一种常用的安全保密手段,利用加密技术可以把重要的数据变 ...