然后调用lua_getfield(lua,-1,"name");,将(-1)位置的变量作Table解析,并取出其中的“name”键的值压入交互栈,位于(-1)位置, 原来的Table被下压一层至(-2)。然后调用lua_getfield(lua,-2,"author");对(-2)位置的Table进行取值,取出其键为“author”的 值并压入到交互栈位置(-1),这样原来的“name...
ParseLuaTable(L);if(error) { fprintf(stderr,"%s", lua_tostring(L, -1)); lua_pop(L,1);/*pop error message from the stack*/}return0; }
void lua_pushboolean (lua_State *L, int bool); void lua_pushnumber (lua_State *L, lua_Number n); void lua_pushinteger (lua_State *L, lua_Integer n); void lua_pushunsigned (lua_State *L, lua_Unsigned n); void lua_pushlstring (lua_State *L, const char *s, size_t len); vo...
lua_istable(L,-1))//not table type{CLUA_DEBUG("current target is not table, array index get failed.\n");returnCLUA_ERROR;}if(LUA_TNIL==lua_rawgeti(L,-1,index)){CLUA_DEBUG("array index[%ld] is invalid.
C语言与lua通过json对象交互 C语言调用Lua,传递一个JSON字符串,并将其解析为table,并返回一个JSON串给C语言。 在使用C语言调用Lua的过程中,有时需要向Lua传递一些数据,并从Lua接收返回结果。为了实现这个功能,我们可以借助第三方库,在C语言与Lua之间建立一个桥梁。在本篇文章中,我们将介绍如何在C语言中调用Lua,...
C 中访问 Lua 配置表的优化 这两天写代码时用到之前写的一个对 Lua 配置表的 cache 模块。感觉用起来还是不够简洁方便。我今天动手重新设计了一下。 需求是这样的: 项目有非常多的配置信息保存在 Lua 的 (树状层级的)table 中,大部分逻辑代码直接用 Lua 的语法便可直接访问。但是,有少量有性能要求的业务是...
简介:C语言与lua通过json对象交互 C语言调用Lua,传递一个JSON字符串,并将其解析为table,并返回一个JSON串给C语言。 在使用C语言调用Lua的过程中,有时需要向Lua传递一些数据,并从Lua接收返回结果。为了实现这个功能,我们可以借助第三方库,在C语言与Lua之间建立一个桥梁。在本篇文章中,我们将介绍如何在C语言中调用...
C API 遍历 Table lua_getglobal(L, t); lua_pushnil(L); while (lua_next(L, -2)) { /* 此时栈上 -1 处为 value, -2 处为 key */ lua_pop(L, 1); } lua_next函数针对 -2 处(参数指定)的 Table 进行遍历。弹出 -1 处(栈顶)的值作为上一个 key(为 nil 时视为请求首个 key),压...
Lua 中的 Table(表)结构可以使用任何数据作为 key 进行取值。使用 C API 访问 Table 中的元素有两种方法: 复制代码代码如下: lua_getglobal(L, t); lua_pushinteger(L, k); -- 这里可以换成其它类型的 lua_pushXXXX(L, k) 压数据到栈顶作key ...
有时需要向函数传递相对比较复杂的数据,定义多个形参显得很难看,C语言函数中通常传递一个数据结构,而对于lua最直接的莫过于传递一个table数据。C调用lua函数时,也可以通过构造table数据传递给lua函数。 基本步骤比较简单,大致是(1)获取lua函数(2)在栈中构造一个table(3)向table中压入相应的数据(key-value)(4)...