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. Django基础内容整理

  2. 贝叶斯--旧金山犯罪分类预测和电影评价好坏 demo

    来源引用:https://blog.csdn.net/han_xiaoyang/article/details/50629608 1.引言 贝叶斯是经典的机器学习算法,朴素贝叶斯经常运用于机器学习的案 ...

  3. QT_获取运行进程所在目录路径_1

    QString getProcessPathForWin(int idProcess) { #ifdef Q_OS_WIN // access process path WCHAR name[]; Z ...

  4. 直白介绍卷积神经网络(CNN)【转】

    英文地址:https://ujjwalkarn.me/2016/08/11/intuitive-explanation-convnets/ 中文译文:http://mp.weixin.qq.com/s ...

  5. JavaScript--放大镜

    上例图: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF- ...

  6. 【Leetcode 堆、快速选择、Top-K问题 BFPRT】数组中的第K个最大元素(215)

    这道题很强大,引出了很多知识点 题目 在未排序的数组中找到第 k 个最大的元素.请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素. 示例 1: 输入: [3,2,1,5 ...

  7. ansible Ansible Galaxy ansible-playbook 安装 使用 命令 笔记 生成密钥 管控机 被管控机 wget epel源

    笔记 ansible 安装 与salt对比 相同 都是为了同时在多台机器上执行相同的命令 都是python开发 不同 agent(saltstack需要安装.ansible不需要) 配置(salt配置 ...

  8. day4-转自金角大王

    Python之路,Day4   本节大纲 迭代器&生成器 装饰器  基本装饰器 多参数装饰器 递归 算法基础:二分查找.二维数组转换 正则表达式 常用模块学习 作业:计算器开发 实现加减乘除及 ...

  9. win7 powershell版本过低问题

    那台win8系统的笔记本电脑 硬盘坏掉后  在win7系统的台式机上使用 vagrant up 提示版本过低 The version of powershell currently installed ...

  10. HTML5八大特性助力移动WebApp开发

    http://www.cocoachina.com/webapp/20150906/13344.html WebApp的实现基础就是HMTL5+JS+CSS3,但是WebApp还是基于浏览器的微网站开 ...