1. 函数注册

Lua 5.4.4 变化比较大,从5.2后就变了

static void my_fun(lua_State* lua) {const int arg1 = luaL_checkinteger(lua, 1);const char* str= luaL_checklstring(lua, 2, NULL);printf("%d : %s\r\n",arg1, str);
}static const luaL_Reg DRIVERS[] = {{"my_fun", my_fun}
};static int reg_funcs(lua_State* L) {int i;for (i = 0; i < sizeof(DRIVERS) / sizeof(luaL_Reg); ++i) {lua_pushcfunction(L, DRIVERS[i].func);lua_setglobal(L, DRIVERS[i].name);}return LUA_OK;
}

这样在lua脚本中就可以调用了

my_fun(1,  "Hello from Lua");

2. 注册模块

int my_func1(lua_State* L)
{}int my_func2(lua_State* L){}/* OLED driver */
static const luaL_Reg my_funcs[] = {{"func1", my_func1},{"func2", my_func2},{NULL, NULL}
};

在嵌入式系统中可以自己写函数优化一下了,这里用NULL对象来表示结束有点儿浪费资源

int lua_openMyLib( lua_State* L) {luaL_newlib(L,my_funcs);return 1;
}

然后在初始化时添加

 luaL_requiref(L, "my", lua_openMyLib, 1);

5.2之后不能用lua_register了。这样在Lua脚本中就可以这样用:

my.func1();
my.func2();

还是喜欢这样的代码,看着舒服,不喜欢用下划线以及很长的函数名。

Lua 5.4.4函数、模块注册相关推荐

  1. android 函数名注册,Android JNI 函数注册的两种方式(静态注册/动态注册)

    在Android开发中,由于种种原因我们需要调用C/C++代码, 这个时候就要用到Android开发者都听说过的JNI(Java Native Interface)了, 在调用JNI相关方法之前, 要 ...

  2. python 自定义函数导入_python如何导入自编函数模块

    Python中导入自定义的函数模块: 1.严格区分包(package)和文件夹.包的定义就是包含__init__.py的文件夹.如果没有__init__.py,那么就是普通的文件夹. 2.模块导入写法 ...

  3. Python学习笔记--day09 函数 模块 (文件、路径操作)

    第二模块 函数&模块 第一模块主要是学习python基础知识,从第二模块开始就可以通过程序去解决工作中实际的问题. 函数,一个用于专门实现某个功能的代码块(可重用). 内置函数 len.bin ...

  4. 回调函数的注册和回调

    函数注册和回调函数 1.什么是函数注册和回调 回调函数无非是对函数指针的应用,说白了就是通过使用函数指针来调用一个函数,而函数注册就是把函数指针作为参数传递出去便于别的模块使用的过程.所以函数注册就是 ...

  5. C语言 — 函数的注册和回调

    函数注册和回调函数 1.什么是函数注册和回调 回调函数无非是对函数指针的应用,说白了就是通过使用函数指针来调用一个函数,而函数注册就是把函数指针作为参数传递出去便于别的模块使用的过程.所以函数注册就是 ...

  6. 【金猿技术展】模块注册机制——打造AI算法流水线

    上海人工智能实验室&商汤科技技术 本项目由上海人工智能实验室&商汤科技投递并参与"数据猿年度金猿策划活动--2021大数据产业创新技术突破榜榜单及奖项"评选. 数据 ...

  7. bzero函数_函数模块 | UDP自动获取本地广播地址

    让技术·去旅行 点击上方蓝字可以关注我们哦 本文以函数形式做笔记,因为函数模块式编程,可以大大提升代码的可读性. 首先来了解ifreq 这个结构体 1.结构定义 struct ifconf { int ...

  8. 函数模块:POPUP_TO_INFORM

    这个函数模块可以弹出最多带有 4 行文本的提示框. 包含 5 个输入参数,都没有限制类型和长度,其中一个标题 TITEL 和四个文本 TXT1/2/3/4,必需输入标题和前两个文本. 转载于:http ...

  9. BeeHive模块注册

    BeeHive是阿里巴巴开源的一个模块化框架,是app模块化编程的一种实现方案.都知道项目一旦大了起来单单的mvc架构就很难支撑了,由此我们需要将代码模块化处理,对业务模块进行业务分离,达到内聚.分离 ...

  10. 函数模块:CTVB_COMPARE_TABLES

    这个函数模块比较两个内表,将被删除.增加和修改的内表行分别分组输出. 输入参数: TABLE_OLD:旧表 TABLE_NEW:新表 KEY_LENGTH:键长度,指定内表中的前若干个字节(在 Uni ...

最新文章

  1. Markdown--行内公式编辑
  2. Java中ArrayList类的用法
  3. 关于MFC里面位图相关的操作
  4. 设计模式--工厂模式(简单总结)
  5. (1)外网映射(NATAPP快速入门)
  6. 不得不看的黑客工具集
  7. 论文翻译器:pdf 英文论文一键转换成中英文对照的文档
  8. 机械键盘恢复出厂fn_机械键盘使用说明
  9. iphonex 序列号_X的序列号什么开头有什么意思吗?
  10. 嵌入式OTA升级实现原理
  11. C# 模拟PCM数据并创建WAV文件
  12. 睡地板的女高管,也被马斯克裁了!推特丧心病狂的第八轮裁员来了
  13. linux端口共享打印机,linux如何共享打印机
  14. 经验总结|一个移动端数据产品的设计思路
  15. 在线教育如何做好直播?
  16. word跨文件格式刷的方法
  17. 英语发音规则---Q字母
  18. docker-compose部署SS
  19. 浏览器调用本地应用程序
  20. python实现寻找最长回文子串

热门文章

  1. 面试官:说说微信小程序的登录流程?
  2. 【模拟】寄居蟹与海葵
  3. 电商千万用户 mysql设计_Mysql电商设计用户模块 一
  4. a标签带参数跳转页面,并在跳转页面接受参数
  5. 团子杂记:SAP可持续化发展解决方案之产品碳足迹管理(PFM)简介
  6. 实现windows xp自动登录大法
  7. 【面试】中科院北京某所公司——中科晶上一面
  8. 给电脑重装系统的方法与重装过程中问题解决
  9. 微信图片上传下载(将图片保存到服务器里的文件路径)
  10. 金字塔(算法竞赛进阶指南)