lua文件中调用C++函数并传递表参数
main.lua
1 2 |
local tab = {name = "lif",age = "18",id = "003"} ctest_table(tab) |
C++函数中获取参数并处理
遍历表
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
int CTest_Table(lua_State * L) { std::cout << "CTest Array" << std::endl; //因为lua先弹出key,而第一次value可能是空的,这样会出错 lua_pushnil(L); while(lua_next(L,1) != 0) { //因为lua会先把key压入栈,然后压入value,key就在value的底部 std::cout << "key = " << lua_tostring(L,-2) << std::endl; std::cout << "value = " << lua_tostring(L,-1) << std::endl; //结束的时候,lua会弹出key,但value还在,手动弹出value lua_pop(L,1); } return 0; } |
只取表中一组数据
1 2 3 4 5 6 7 8 |
int CTest_Table(lua_State * L) { std::cout << "CTest Array" << std::endl; //getfiled会访问表中key为"name"的value,并把这个value压入栈顶,即-1的位置 lua_getfiled(L,1,"name"); std::cout << "name = " << lua_tostring(L,-1) << std::endl; return 0; } |
函数的注册
1 |
lua_register(lua,"ctest_table",CTest_Table); |
参数类型检测
方法一
特点:检查类型,一旦不匹配,就不会往下执行
1 |
luaL_checktype(L,1,LUA_TBOOLEAN); |
方法二
特点:检查类型,会往下执行
1 2 3 4 |
if (luaL_type(L,2) != LUA_TNUMBER) { std::cout << "par is not a number" << std::endl; } |
本文为原创文章,版权归Aet所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ Lua_基础 类型&&值09/26
- ♥ C++_调用 Lua内容:表—传递&&获取10/12
- ♥ Lua程序设计:三11/13
- ♥ C++_调用 Lua函数10/09
- ♥ CLion:配置C++下lua开发环境06/03
- ♥ Lua_调用 C++程序里的函数,给Lua调用10/01