lua注册函数】的更多相关文章

#include <stdio.h> #include <math.h> #define MAX_COLOR 255 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_State,返回值为返回值的个数…
lua与c的交互 关于lua和c的交互,主要有两个方面,一是lua调用c的函数,而另一个则是c调用lua函数.而这些都是通过lua stack来进行的. c调用lua 在c里面使用lua,主要是通过lua_call这类函数,下面来自lua manual的例子: lua_getglobal(L, "f"); /* function to be called */ lua_pushstring(L, "how"); /* 1st argument */ lua_getg…
实现原理: 通过将LUA中得回调函数存入LUA注册表中来保存LUA函数,然后在需要回调时从LUA注册表中取出LUA函数进行调用 下面是一些预备知识:(学习两个重要的函数) 原汁原味的英文解释的最透彻,翻译的话就会加入自己的理解 LUA_GLOBALSINDEX LUA_ENVIRONINDEX LUA_REGISTRYINDEX Lua provides a registry, a pre-defined table that can be used by any C code to store…
#include <iostream> #include <string.h> extern "C" { #include "lua-5.2.2/src/lua.h" #include "lua-5.2.2/src/lauxlib.h" #include "lua-5.2.2/src/lualib.h" } //定义库函数 static int l_dir(lua_State* L) { } stati…
lua_getallocf lua_Alloc lua_getallocf (lua_State *L, void **ud); 返回给定状态机的内存分配器函数.如果 ud 不是 NULL ,Lua 把调用lua_newstate 时传入的那个指针放入*ud . lua_getfenv void lua_getfenv (lua_State *L, int index); 把索引处值的环境表压入堆栈. lua_getfield void lua_getfield (lua_State *L, i…
function count( ... ) return function( ... ) i = i+ return i end end local func = count(...) print(func()) print(func()) print(func()) 结果如下: [Finished .1s] lua 闭合函数:一个函数加上该函数所需访问的所有“非局部变量”. 如上所示:count()函数返回了另一个函数,而这个函数使用了count()函数中的局部变量.当该函数被调用时,coun…
转自: http://blog.csdn.net/wzzfeitian/article/details/8653101 在Lua中,函数是对语句和表达式进行抽象的主要方法.既可以用来处理一些特殊的工作,也可以用来计算一些值.下面有3个例子,分别将函数当作一条语句:当作表达式(后面两个是一类). print(8*9, 9/8)                  --> 72  1.125 a = math.sin(3) + math.cos(10)   --> a = -0.6979515210…
Lua支持面向对象,操作符为冒号‘:’.o:foo(x) <==> o.foo(o, x). Lua程序可以调用C语言或者Lua实现的函数.Lua基础库中的所有函数都是用C实现的.但这些细节对于lua程序员是透明的.调用一个用C实现的函数,和调用一个用Lua实现的函数,二者没有任何区别. 函数的参数跟局部变量一样,用传入的实参来初始化,多余的实参被丢弃,多余的形参初始化为nil. count= function incCount(n) n=n count=count+n end incCoun…
Lua5.1中的API函数 lua_State* luaL_newstate()Lua脚本的编译执行是相互独立的,在不同的线程上执行.通过luaL_newstate()函数可以申请一个虚拟机,返回指针类型 lua_State.今后其他所有Lua Api函数的调用都需要此指针作为第一参数,用来指定某个虚拟机.lua_State* L = luaL_newstate();-----------------------------------------------------------------…
由于 Lua 脚本语言本身不支持对数字的二进制操作(例如 与,或,非 等操作),MUSHclient 为此提供了一套专门用于二进制操作的函数,它们都定义在一个"bit"表中,使用时只要requre "bit"即可. bit.ashr - 带符号的按位右移 此函数需要两个整数作为参数.第一个参数可以带有符号,是被以为的数,第二个参数是一个无符号整数,是向右移动的位数.在以为过程中,第一个参数的符合始终会被保留. 例如: print (bit.ashr (-1024,…