在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
lua利用虚拟栈与C进行数据交换。在栈中的每个元素都表示一个值(nil, string, number etc) 利用栈进行数据交换,数据采用先进后出原则。 Lua 的每个元素有两种序号进行编号。
Lua如何操作堆栈的 查询栈中的元素 类型为以下:LUA_TNIL, LUA_TNUMBER, LUA_TBOOLEAN, LUA_TSTRING, LUA_TTABLE, LUA_TFUNCTION, LUA_TUSERDATA, LUA_TTHREAD, and LUA_TLIGHTUSERDATA, LUA_TNONE
int lua_isboolean (lua_State *L, int index); int lua_iscfunction (lua_State *L, int index); int lua_isfunction (lua_State *L, int index); int lua_islightuserdata (lua_State *L, int index); int lua_isnil (lua_State *L, int index); int lua_isnone (lua_State *L, int index); int lua_isnoneornil (lua_State *L, int index); int lua_isnumber (lua_State *L, int index); int lua_isstring (lua_State *L, int index); int lua_istable (lua_State *L, int index); int lua_isthread (lua_State *L, int index); int lua_isuserdata (lua_State *L, int index); 返回值:是返回1,不是返回0. 获取栈内给定位置的元素值 int lua_toboolean (lua_State *L, int index); lua_CFunction lua_tocfunction (lua_State *L, int index); lua_Integer lua_tointeger (lua_State *L, int index); const char *lua_tolstring (lua_State *L, int index, size_t *len); lua_Number lua_tonumber (lua_State *L, int index); const void *lua_topointer (lua_State *L, int index); const char *lua_tostring (lua_State *L, int index); lua_State *lua_tothread (lua_State *L, int index); void *lua_touserdata (lua_State *L, int index); 设置栈顶 void lua_settop (lua_State *L, int index); 设置index索引为栈顶,index之上的元素都被清除 void lua_pushvalue (lua_State *L, int index); 将index索引的数据压入栈顶,index索引数据保留,即有两份数据 移除栈顶元素 void lua_remove (lua_State *L, int index); 删除 index 的元素,index之上的编号往下移动 向栈中插入元素 void lua_insert (lua_State *L, int index); 将栈顶出栈,插入指定 index 索引位置,之前的索引值依次向上移动。 void lua_replace (lua_State *L, int index); 将栈顶出栈,替换掉index索引位置的数据 Lua 编译为字节码 int luaL_dofile (lua_State *L, const char *filename -- lua字节码文件,生成一个函数,并用字节码设置函数,最后将函数入栈 -- lua源文件,编译为字节码,并用字节码设置函数,最后将函数入栈 ); int luaL_loadbuffer (lua_State *L, const char *buff, -- 将字符串的内容作为源代码进行编译,编译之后也会生成一个函数,并用字节码设置函数,最后将函数入栈 size_t sz, -- 长度 const char *name -- ); Lua执行字节码 int lua_pcall (lua_State *L, int nargs, int nresults, int errfunc); 调用方法: lua_call ... |
请发表评论