前两天测试Lua接收C++函数的参数时,发现number、boolean、string都没有什么问题,但是userdata和lightuserdata有什么区别呢?于是测试了一下,我们来看看结果。
具体代码C++代码intmain(){Ctesttest;lua_State*L=lua_open();luaL_openlibs(L);luaL_dofile(L,"pushtype.lua");//加载执行lua文件lua_register(L,"new_user_data",new_user_data);lua_pushstring(L,"Helloworld");lua_setglobal(L,"a");lua_pushinteger(L,110);lua_setglobal(L,"b");Ctest*c=&test;lua_pushlightuserdata(L,c);lua_setglobal(L,"c");char*d=(char*)lua_newuserdata(L,32);lua_setglobal(L,"d");lua_getglobal(L,"test_print");//函数入栈lua_pcall(L,0,0,0);//打印信息lua_close(L);return0;}Lua代码functiontest_print()print("a=",a)print("type="..type(a),"\n")print("b=",b)print("type="..type(b),"\n")print("c=",c)print("type="..type(c),"\n")print("d=",d)print("type="..type(d),"\n")end输出结果总结
经过测试我们发现,在Lua中lightuserdata和uesrdata的类型显示是一样的…