11.C++调用Lua全局变量(表)

C++ 调用Lua 全局变量(表)
lua_getglobal(lua, "ta"); //调用后栈顶放的就是全局变量
lua_getfield(lua, -1, "name");//
printf("lua ta = %s\n", lua_tostring(lua, -1));
lua_pop(lua, 2);

列子:
C++:
//c++调用Lua给Lua传递表和访问Lua的表-----------------------
第一种
lua_getglobal(L,"conf"); //取表
lua_getfield(L,-1,"height");
printf("height= %d\n",(int)lua_tonumber(L,-1));

lua_getfield(L,-2,"titlename"); //取值
printf("title = %s\n",lua_tostring(L,-1));
lua_pop(L,3);

//第二种,每取一次就把值出栈
lua_getglobal(L,"conf"); //取表
lua_getfield(L,-1,"height");
printf("height= %d\n",(int)lua_tonumber(L,-1));
lua_pop(L,1);

lua_getfield(L,-1,"titlename"); //取值
printf("title = %s\n",lua_tostring(L,-1));
lua_pop(L,1);
lua_pop(L,1); //最后要表出栈


LUA:
------------------c++调用Lua给Lua传递表和访问Lua的表-----------------------
conf = {
titlename="first lua",
height = 1080
}


C++给Lua传递表:
lua_newtable(lua); /* creates a table 创建一个表*/
lua_pushstring(lua, "name"); //压入表
lua_pushstring(lua, "c to lua name");
lua_settable(lua, -3); //弹出key, value, 表在栈顶了
lua_setglobal(lua, "cvar"); //将栈顶位置设置全局变量并出栈

例子:
c++
//c++给Lua传递表
lua_newtable(L);
lua_pushstring(L,"name");
lua_pushstring(L,"xiaoming");
lua_settable(L,-3);
lua_pushstring(L,"age");
lua_pushnumber(L,20);
lua_settable(L,-3);
lua_setglobal(L,"testCToLuaTable"); //设为全局变量

lua:

-------------------c++传递给Lua全局变量表

print("test name c++ -> lua table="..testCToLuaTable["name"]);
print("test age c++ -> lua table="..testCToLuaTable.age);

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值