#include <stdio.h>
extern "C"
{
#include "lua-5.2.2/src/lauxlib.h"
#include "lua-5.2.2/src/lualib.h"
#include "lua-5.2.2/src/lstate.h"
}
//lua与c交互栈的索引,假如栈中有5个元素
//5 -1
//4 -2
//3 -3
//2 -4
//1 -5
void stackDump(lua_State* L)
{
int i = ;
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));//从栈中i索引位置取字符串,返回字符串的指针,对于字符串指针不能在函数外部,函数返回后会清理栈
break;
case LUA_TBOOLEAN: /* booleans */
printf(lua_toboolean(L, i) ? "true" : "false");
break;
case LUA_TNUMBER: /* numbers */
printf("%g", lua_tonumber(L, i));
break;
default: /* other values */
printf("%s", lua_typename(L, t));//转换类型码到类型名
break;
}
printf(" ");
}
//printf("\n");
} int main()
{
lua_State* L = luaL_newstate();
lua_pushboolean(L, );//向栈中压入bool类型
lua_pushinteger(L, );//向栈中压入int类型
lua_pushnil(L); //向栈中压入空值nil
lua_pushstring(L, "hello");//压入c风格字符串
stackDump(L);
/* true 10 nil `hello' */ lua_pushvalue(L, -); //压入堆栈上指定索引位置的拷贝到栈顶
stackDump(L);
///* true 10 nil `hello' true */ lua_replace(L, );
stackDump(L);
///* true 10 true `hello' */
/*Lua_insert移动栈顶元素到指定索引位置*/
lua_settop(L, ); //设置栈顶,不够补nil,多了删除,lua_settop(L, 0)清空栈
stackDump(L);
///* true 10 true `hello' nil nil */ lua_remove(L, -);//移除指定索引位置的元素,并将上面的元素下移
stackDump(L);
///* true 10 true nil nil */ lua_settop(L, -);
stackDump(L);
/* true */ lua_close(L);
getchar();
return ;
}

这个vs不知怎搞的老是出现蛋疼的问题

最新文章

  1. [水煮 ASP.NET Web API2 方法论](3-9)空气路由的设置
  2. ftp安全设置
  3. Android中设定背景图片平铺。
  4. ServletContext总结
  5. Jenkins任务启动的后台进程被自动kill
  6. [Cocos2d-x]解决Android平台ndk-build时不自动删除外部库
  7. hihoCoder 1595 : Numbers
  8. 【转】IE沙箱拖拽安全策略解析
  9. Police Stations CodeForces - 796D (bfs)
  10. constructor&amp;object 的对比
  11. Linux内核分析作业五
  12. 为caffe添加最简单的全通层AllPassLayer
  13. Bug04_spring注解报错
  14. 2018SDIBT_国庆个人第四场
  15. 题解 P5239 【回忆京都】
  16. 实验八 c排序算法
  17. October 05th 2017 Week 40th Thursday
  18. 20165318 2017-2018-2 《Java程序设计》第四周学习总结
  19. C#计算两个日期之间相差的天数
  20. [SP8372-TSUM]Triple Sums

热门文章

  1. Java 使用IE浏览器下载文件,文件名乱码问题
  2. Android源码解析系列
  3. C#中out与ref区别
  4. 新装系统(CentOS7.4)环境初始化配置笔记
  5. Java之Jackson框架
  6. Centos6.6 以rpm方式安装mysql5.6
  7. Spring IOC源代码具体解释之容器初始化
  8. 键盘上所有键位的ascii值
  9. (十)Thymeleaf用法——Themeleaf内联
  10. JSON Web Token (JWT) 实现与使用方法