lua_tointeger(lua_State*, int):返回一个有符号的整数值 lua_tostring(lua_State*, int):返回字符串 ,是一个const char*类型 lua_gettop(lua_State*):获得Lua栈顶元素的索引,一般用于判断有函数有几个入参 针对lua_tostring弹出的字符串,可能会被Lua虚拟机回收
"function loop_cadd(a, b) " " local sum = 0 " " for i = 1, 10000000 do " " sum = sum + csum(a,b) " " end " " return sum " "end " 其中csum是一个c函数 int csum(lua_State* l) { int a = lua_tointeger(l,1) ; int b = lua_tointeger(l,2) ; lua_pushinteger(l...
lua_pushnumber(L,0,0);压入一个数字 lua_tostring(L,1);取出一个字符串returnconstchar* lua_tointeger(L,1);取出数字returnint double b=lua_tonumber();取出一个double类型的数字 lua_load()函数 当这个函数返回0时表示加载 luaL_loadfile(filename) 这个函数也是只允许加载lua程序文件,不执行lua文件。...
将给定索引处的 Lua 值转换为带符号的整数类型 lua_Integer。 这个 Lua 值必须是一个整数,或是一个可以被转换为整数 (参见 §3.4.3)的数字或字符串; 否则,lua_tointegerx 返回0 。 如果isnum 不是NULL, *isnum 会被设为操作是否成功。 lua_tolstring# [-0, +0, e] const char *lua_tolstring (lua...
print(array["1"]) --输出nil(想想和array[1]的区别:一个是integer作为key,一个是字符串做为key) 1. 2. 通用Table操作方法 之前我们在教程1中介绍了如何传递Table给Lua,以及在教程3中介绍了如何访问Table的数据。因为数组也是Table,所以我们可以用同样的方式来读取数组。
其中boolean(布尔)、integer(整型)、double(浮点)、light userdata、light c function是直接存在栈上的 TString、Udata、Closure、Table、lua state在栈上只是一个指针,都为GC类型,当没有被引用时会被lua的GC系统自动回收,具体结构如下: 将不同类型的变量压栈 ...
/* type to ensure maximum alignment */ #if defined(LUAI_USER_ALIGNMENT_T) typedef LUAI_USER_ALIGNMENT_T L_Umaxalign; #else typedef union { lua_Number n; double u; void *s; lua_Integer i; long l; } L_Umaxalign; #endif 1.
{lua_Integer n = lua_tointeger(L, lua_upvalueindex(1));n++;const char* str = lua_tostring(L, -1);fprintf(stdout, "[n=%lld]---%s\n", n, str);lua_pushinteger(L, n);lua_replace(L, lua_upvalueindex(1));return 0;}static const luaL_Reg l[] = {{"echo", lecho},{NULL,...
*/typedef union Value{struct GCObject*gc;/* collectable objects */void*p;/* light userdata */lua_CFunction f;/* light C functions */lua_Integer i;/* integer numbers */lua_Number n;/* float numbers */}Value;/* ** Tagged Values. This is the basic representation of values in Lua:...
int result = lua_tointeger(L, -1); printf("Result of my_lua_function(5): %d\n", result); lua_pop(L, 1); // 弹出返回值 // 6.关闭 Lua 状态:完成操作后关闭 Lua 状态。 lua_close(L); return 0; } 在这个示例中,C 代码首先创建了一个 Lua 状态,然后加载并执行了一个定义了 my_...