当前位置: 首页 > news >正文

Lua收到C++传入的参数类型有一种userdata

前言

前两天测试Lua接收C++函数的参数时,发现number、boolean、string都没有什么问题,但是userdata和lightuserdata有什么区别呢?于是测试了一下,我们来看看结果。

具体代码

  1. C++ 代码
int main()
{
    Ctest test;

    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, "Hello world");
    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);

    return 0;
}
  1. Lua代码
function test_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
  1. 输出结果
    userdata

总结

经过测试我们发现,在Lua中lightuserdata和uesrdata的类型显示是一样的…

相关文章:

  • Lua中可完美运行的三目运算符
  • Lua中 'local xxx do ... end' 到底表达了什么
  • Python树形打印目录结构
  • 排序算法系列之(二)——冒泡排序名字最为形象的一个
  • Python查找文件中包含中文的行
  • sscanf类似于正则表达式的进阶用法
  • mysql函数扩展之UDF开发
  • Python实现一个简单的图片爬虫
  • 验证mysql联合索引最左原则
  • Mysql查询时case when语句的使用
  • Vim中简单格式化代码
  • Vim、Xshell、远程终端莫名卡死的原因
  • 关于游戏中仓库类的设计
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • 神秘莫测的时间复杂度
  • 【comparator, comparable】小总结
  • 【mysql】环境安装、服务启动、密码设置
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • Django 博客开发教程 16 - 统计文章阅读量
  • java概述
  • js
  • JS+CSS实现数字滚动
  • nginx 配置多 域名 + 多 https
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • tensorflow学习笔记3——MNIST应用篇
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • 近期前端发展计划
  • 蓝海存储开关机注意事项总结
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 自动记录MySQL慢查询快照脚本
  • 从如何停掉 Promise 链说起
  • # Apache SeaTunnel 究竟是什么?
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • (12)Hive调优——count distinct去重优化
  • (NSDate) 时间 (time )比较
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (未解决)macOS matplotlib 中文是方框
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转)fock函数详解
  • (转)平衡树
  • .apk 成为历史!
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .form文件_SSM框架文件上传篇
  • .NET Core 和 .NET Framework 中的 MEF2
  • .Net Winform开发笔记(一)
  • .so文件(linux系统)
  • /bin/rm: 参数列表过长"的解决办法
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?
  • @SpringBootApplication 包含的三个注解及其含义
  • @TableLogic注解说明,以及对增删改查的影响
  • [ JavaScript ] JSON方法
  • [20170705]diff比较执行结果的内容.txt
  • [BZOJ 1040] 骑士
  • [BZOJ 3531][Sdoi2014]旅行(树链剖分+线段树)