- 博客(19)
- 资源 (6)
- 收藏
- 关注
原创 Lua 在Lua中调用C函数
首先能够被Lua调用的C函数要满足如下声明://ctypedef int (*lua_CFunction) (lua_State *L);例如: 由于Lua有局部栈,所以参数在栈中的位置永远是1开始。并且函数返回后会自动清理栈。//cstatic int l_sin (lua_State *L) { double d = luaL_checknumber(L, 1); lua_
2016-01-28 17:11:33 568
原创 Lua 在C程序中调用Lua函数
调用Lua函数的步骤为: 获得函数并压入栈 按顺序压入参数 调用lua_pcall,该函数的第二个参数是参数个数,第三个参数是返回个数,第四个参数是异常处理函数 示例程序://c/* call a function 'f' defined in Lua */double f (lua_State *L, double x, double y) { int isnu
2016-01-28 16:10:53 983
原创 Lua 在C程序中进行Lua表操作
为了表示RGB颜色,假设在C程序中需要用三个0~255数字,在Lua由于是实数就用0~1表示。在lua中你可以用一个表来写:--luabackground = {r=0.30, g=0.10, b=0}你也就可以这样使用预定义颜色:--luaBLUE = {r=0, g=0, b=1.0}<other color definitions>background = BLUE一、获取表信息 在
2016-01-28 15:18:51 1373
原创 Lua 配置文件示例
void load (lua_State *L, const char *fname, int *w, int *h) {if (luaL_loadfile(L, fname) || lua_pcall(L, 0, 0, 0)) error(L, "cannot run config. file: %s", lua_tostring(L, -1)); lua_getglobal(L
2016-01-27 21:54:39 897
原创 Lua 从C程序获得Lua变量值
无论你何时想要从Lua 请求一个值(比如一个全局变量的值),调用Lua,被请求的值将会被压入栈。无论你何时想要传递一个值给Lua,首先将这个值压入栈,然后调用Lua(这个值将被弹出)。 Lua 以一个严格的LIFO 规则(后进先出;也就是说,始终存取栈顶)来操作栈。当你调用Lua 时,它只会改变栈顶部分。你的C代码却有更多的自由;更明确的来讲,你可以查询栈上的任何元素,甚至是在任何一个位置插入和删
2016-01-27 21:12:50 1364
原创 Lua 简单Lua解释器源码分析
#include <stdio.h>#include <string.h>#include "lua.h"#include "lauxlib.h"#include "lualib.h"int main (void) {char buff[256];int error;lua_State *L = luaL_newstate(); /* 创建Lua环境 */luaL_openlibs
2016-01-27 18:47:57 2235
原创 lua 编译、执行和错误
一、编译 1. loadfile 只编译文件,不运行。 2. dofile 编译文件并运行。function dofile (filename)local f = assert(loadfile(filename))return f()endload(5.1以上改为loadstring) 编译字符f = load("i = i + 1")i = 0f(); print(i)
2016-01-27 11:12:07 376
原创 Lua 迭代器
7.1 Iterators and ClosuresIn Lua, we typically represent iterators by functions: each time we call the function, it returns the “next” element from the collection.function values (t) local i =O
2016-01-27 10:17:41 381
原创 Lua 关于函数的更多内容
一、匿名函数 Lua中的函数其实都是匿名函数,我们定义函数的时候:function foo (x) return 2*x end等价于foo = function (x) return 2*x end这里foo只是保存匿名函数的变量。1.lua的函数是一种 First-Class Value 的东西, 到底是啥? 就是它们与传统类型的变值没啥区别, 可以 存到一个变量中, 可以 存到ta
2016-01-23 23:51:33 390
原创 photoshop CS6 AMD独立显卡不兼容导致笔记本蓝屏
1.用360驱动大师两个显卡升级到最新2.配置可交换显卡,全局强制省电3.安装PS4.进入安全模式,将Adobe启动项关闭,疑难解答中将图形加速关闭5.配置可交换显卡,将PS设为强制省电6.进入PS,首选项关闭
2016-01-23 13:41:22 2901
原创 Lua 函数
Lua中的函数参数如果是string或表构造器,则圆括号可以忽略掉。print "Hello World" <--> print("Hello World")dofile 'a.lua' <--> dofile ('a.lua')print [[a multi-line <--> print([[a multi-linemessage]]
2016-01-20 09:52:06 492
原创 Lua 语句
Lua的语句支持赋值、控制结构、程序调用、多重赋值和局部变量声明。一. 赋值 跟C语言等编程语言一样的语法,不再多说。二. 多重赋值 下面这段代码分别给a赋值10,给b赋值20a, b = 10, 20 因为多重赋值是先取值后赋值,通过多重赋值可以方便地实现交换值:x, y = y, x当要赋的值的个数比变量多,那么后面多余的会省略。 当要赋的值的个数比变量少,那么缺乏的将会由nil。还有一个
2016-01-18 13:32:30 737
原创 Lua 表达式
算术操作符 Lua中的常用算术操作符有:+、-、*、/、^、%和-(符号)。%是取余数,结果跟第二个操作数符号一致。关系操作符 Lua中的关系操作符有:<、>、<=、>=、==和~=(不等符号) 次序比较操作符(<、>、<=、>=)只能用于数字和字符串。为了避免数字和字符串次序比较混淆,这已经提升到错误层次。 而表的比较,只能是指向同一个表的才是相等的。逻辑操作符 lua的逻辑操作符有an
2016-01-13 21:32:58 668
原创 Lua 类型和值
Lua是动态类型语言,它有如下的类型:nil, boolean, number, string, userdata, function, thread, 和 table。 type函数用于输出类型名:print(type("Hello world")) --> stringprint(type(10.4*3)) --> numberprint(type(print)) --> function
2016-01-13 19:29:27 693
原创 Lua 独立解释器
在命令行运行Lua脚本的参数的格式是这样的: lua [options] [script [args]]-e 编辑(edit)参数可以直接在命令行参数输入语句:% lua -e "print(math.sin(12))" --> -0.53657291800043-i是在运行脚本后进入交互模式。-l则为在运行脚本前载入lib库:% lua -i -llib -e "x = 10"在交互模式,你可以
2016-01-12 15:51:46 2591 1
原创 Lua 全局变量
Lua的变量无需先声明(定义)才能使用,如果你要使用某个变量,直接使用就可以了。 未赋值的变量的值是nil。print(b) --> nilb = 10print(b) --> 10如果你将一个变量手动赋值为nil,则会对该变量进行内存回收。b = nilprint(b) --> nil
2016-01-12 15:15:25 937
原创 Lua 命名规范
Lua和C一样,支持字符、下划线和数字(数字不能在开头)。 除此之外,lua有些特殊的要求,如:下划线后面不能接一个或多个大写单词,这是lua有特殊用途的。 下面这些是lua保留的关键字,也不能使用: and break do else elseif end false goto for function if in local nil not or repeat retu
2016-01-12 15:09:53 3002
原创 Lua chunk(程序块)
Lua里面一条语句或一块语句称之为chunk(程序块)。 Lua无需;语句结束符,但是你可以加上去。多条语句可以写在同一行而不加;,但是加上;会更清晰。示例:a = 1b = a*2a = 1;b = a*2;a = 1; b = a*2a = 1 b = a*2 -- ugly, but valid
2016-01-12 14:53:33 1648
原创 Lua 运行你的第一个HelloWorld
windows下安装配置:下载LuaForWindows后进行安装,非常简单。如何输入并运行代码? 方法一: 在桌面上打开安装好的Lua控制台交互界面,可以输入语句代码直接运行。 (另外,你也可以在cmd命令行中输入 lua -i来进入lua控制台交互界面)。方法二: 将代码保存在文本,后缀名保存为.lua。然后在cmd命令行,输入 lua + lua文件名 即可。测试用例测试用例1:p
2016-01-12 14:47:30 4078
win7 64位汇编开发环境合集
2015-12-01
DirectX11程序初始化
2015-09-28
泡泡堂 DirectX11 Demo
2015-09-06
C++实现状态驱动智能体设计——消息功能
2015-08-17
有限状态机(FSM)
2015-08-17
C++控制台网络聊天室源代码
2015-04-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人