11.C++调用Lua全局变量(表)
2017-08-28 20:12
274 查看
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);
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);
相关文章推荐
- C++中调用Lua的全局变量和全局函数
- 编译原理之学习 lua 1.1 笔记 (二) 函数调用与局部变量
- 生成/创建 DLL 及调用/引用DLL里的函数、全局变量、静态C++类成员函数等
- C/C++读取Lua中的变量及调用Lua函数
- cocos2d-Lua之局部变量与全局变量
- lua防止访问不存在的全局变量
- 深入理解Lua的全局变量_G以及源码实现
- C语言中全局变量的定义与调用
- jquery 异步调用方法中不能给全局变量赋值的原因及解决办法
- jquery 异步调用方法中不能给全局变量赋值的原因及解决办法
- Lua中的全局变量、非全局变量总结
- 织梦(dedecms)系统常用全局变量调用标签及路径
- jquery事件委托的回调函数中调用全局变量的简单方法
- lua中的全局变量与局部变量与块
- Lua初识之全局变量
- 当调用的DLL中有全局变量时调用它的多个实例是否共享同一个全局变量
- matlab全局变量(global):够被其他函数调用.在这两个函数中都要用global修饰这个变量.
- ajax 异步调用把返回值赋给一个全局变量的用法,最主要的就是把async属性改为 false,
- 关与线程中全局变量调用问题
- C/C++调用lua的table,table包含函数,table和变量