#include <iostream>
#include <string.h> extern "C"
{
/*头文件lua.h定义了Lua提供的基础函数,包括创建Lua环境、调用Lua函数、读写Lua环境中全局变量,以及注册供Lua调用的新函数等等*/
#include "lua-5.2.2/src/lua.h"
/*头文件lauxlib.h定义了辅助库提供的辅助函数,它的所有定义都以LuaL_开头。辅助库是一个使用lua.h中API编写出的一个较高的抽象层。
Lua的所有标准库编写都用到了辅助库;辅助库主要用来解决实际的问题。辅助库并没有直接访问Lua的内部,它都是用官方的基础API来完成所有工作的*/
#include "lua-5.2.2/src/lauxlib.h"
/*
头文件lualib.h定义了打开标准库的函数。Lua库中没有定义任何全局变量。它将所有的状态都保存在动态结构lua_State中,
所有的C API都要求传入一个指向该结构的指针。luaL_newstate函数用于创建一个新环境或状态。当luaL_newstate创建一个新的环境时,新的环境中并没有包含预定义的函数(eg.print)。为了使Lua保持灵活,
小巧,所有的标准库都被组织到了不同的包中。当我们需要使用哪个标准库时,就可以调用lualib.h中定义的函数来打开对应的标准库;而辅助函数luaL_openlibs则可以打开所有的标准库
*/
#include "lua-5.2.2/src/lualib.h"
}
int main()
{
char buff[] = {};
int error;
// 打开Lua,lua_State有的说是虚拟机有的说是状态机,感觉是其与lua交互的东西,里面有交互栈的相关信息
// 所有C api函数的第一个参数都是这个lua_state
lua_State *L = luaL_newstate();
luaL_openlibs(L); // 打开标准库,lua所有的库都是以闭包
while (fgets(buff, sizeof(buff), stdin) != NULL)
{
/*
luaL_loadbuffer编译输入的lua代码,没有错误返回0并将编译之后的chunk压入栈
*/
/*
将chunk从栈中弹出并在保护模式下运行
*/
error = luaL_loadbuffer(L, buff, strlen(buff), "line")
|| lua_pcall(L, , , );
if (error)
{
/*
如果有错误上面这两个函数都将错误信息压入栈
lua_tostring从栈中获取
*/
fprintf(stderr, "%s", lua_tostring(L, -));
/*
从栈中删除错误信息
*/
lua_pop(L, ); // 从栈中弹出错误消息
}
} lua_close(L);
getchar();
return ;
}

最新文章

  1. 初学者看过来之JSON入门
  2. Ubuntu使用MyEclipse闪退的解决办法
  3. XAMPP PHPSTORM XDEBUG 配合使用
  4. struts2--文件上传与下载
  5. sql xpath 查找包含
  6. 在Vista或Windows 7系统上安装Sharepoint 2007
  7. 【转】Linux mount/unmount命令
  8. ios开发--27个提升效率的iOS开源库推荐
  9. [转]Windows Shell 编程 第九章 【来源:http://blog.csdn.net/wangqiulin123456/article/details/7987969】
  10. 3月23日html(五) 格式与布局练习:360浏览器布局
  11. LoadRunner相关架构图
  12. iOS移动端直连数据库
  13. 高性能JavaScript模板引擎 artTemplate
  14. php用json_encode中文问题
  15. Facebook&#39;s React vs AngularJS: A Closer Look
  16. windows 文本操作
  17. Redis配置文件介绍
  18. mysql 查询 根据时分秒取数据 比如 取 时间为 8点半的 dateformat 时间函数转换
  19. 20135239 益西拉姆 linux内核分析 使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用
  20. 对Python线程池

热门文章

  1. selenium 定位元素方式大全
  2. maven自己主动编译,解决你每次代码改动须要又一次编译的繁琐
  3. Bloom Filter的应用
  4. elasticsearch升级步骤
  5. Nodejs 模拟telnet
  6. #淘宝#复制分享宝贝内容,打开淘宝APP,自己主动弹出宝贝提示信息
  7. JavaScript对象浅复制
  8. [转]Tomcat工作原理详解
  9. linux LVS (keepalived+ipvsadm)负载均衡搭建
  10. docker 让容器执行命令 与 进入容器交互