C++向Lua传递数组中描述了C++调用Lua过程。
今天在群里看到有人问下面这段代码是什么意思?
<span style="white-space:pre"> </span>lua_newtable(L);
lua_pushnumber(L, -1); //push -1 into stack
lua_rawseti(L, -2, 0); //set array[0] by -1
for(int i = 0; i < len; i++)
{
lua_pushinteger(L, id[i]); //push
lua_rawseti(L, -2, i+1); //
}
---------------------------------------------------------------------------------------------------------------------------------------------------------
首先从Lua栈说起。
Lua和C/C++交互使用的是Lua栈,在lua的堆栈(摘要)(http://wind-catalpa.blog.163.com/blog/static/1147535432013119103150929/)中介绍了交互过程:
假设在一个lua文件中有如下定义
-- hello.lua 文件
myName = "beauty girl"
![lua的堆栈(摘要) - 哃步呼吸 - 留住来去无影的思绪](https://img-my.csdn.net/uploads/201212/26/1356522919_2602.jpg)
请注意红色数字,代表通信顺序:
1) C++想获取Lua