博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Lua5.3相对于Lua5.1的变换
阅读量:6307 次
发布时间:2019-06-22

本文共 903 字,大约阅读时间需要 3 分钟。

hot3.png

1:Lua头文件有宏 可以控制编译时候的兼容性,使5.3可以兼容5.1的c接口

2:Lua package 使用searcher 而不用loader来加载文件, searcher 返回的是加载函数和文件名字,如果不能加载则返回 两个字符串

5.1的Loader只调用lual_loadbuffer 加载模块,由require代码自己来执行模块,而5.3的searcher 设置的loader,需要自己来执行返回的模块

3:去掉了globaltable 需要在registry 中来获取globaltable,因此一些直接操作globaltable的接口需要调整

4:registry 的stack pos 调整了

5:一些接口去掉了,可以在头文件中找到定义的宏

6: lua_rawgeti 增加了返回值int 类型,返回压入值的类型,c#中需要修改原型,

7:LUA_32BITS 5.1的系统基本是 32位的整数,5.3设置成这样放置某些c#接口的参数类型错误, lua_rawgeti, LUA_INTERGER 和 LUA_NUMBER 变成了 int 和 float, 5.3参数默认64位整数,会导致传入32位整数,取不到值。

8:module 功能发生变化, 5.1 require 一个lua文件包含module 函数,则获得一个table,而5.3 require 获得一个函数, module需要改造为 xxx={} return xxx, _M变量也要去掉

9:5.3 中对数字区分了 整数和浮点数, math.random 如果传入浮点数会报错,需要调用math.floor 进行转化, 定义宏 LUA_FLOORN2I

10: 应该设定int 32位, 浮点数 double 这样5.3 才和 5.1兼容 LUA_INT_TYPE LUA_FLOAT_TYPE, 5.3 支持 64位整数, 32位整数 用 float 表示会溢出错误, 在protobuf中 大整数的处理需要小心一些

转载于:https://my.oschina.net/u/186074/blog/785298

你可能感兴趣的文章
淘宝应对"双11"的技术架构分析
查看>>
ssh
查看>>
订单的子单表格设置颜色
查看>>
Office365 Exchange Hybrid 番外篇 ADFS后端SQL群集(一)
查看>>
9个offer,12家公司,35场面试,从微软到谷歌,应届计算机毕业生的2012求职之路...
查看>>
lvs fullnat部署手册(三)rs内核加载toa篇
查看>>
C++策略模式
查看>>
我的友情链接
查看>>
oracle表分区详解
查看>>
网络编程中常见结构体
查看>>
SSL/TLS原理详解
查看>>
Docker 自定义SSH服务镜像
查看>>
JavaScript强化教程 —— Cocos2d-JS自动JSB绑定规则修改
查看>>
configure: error: in `/root/httpd-2.2.11/srclib/apr': c
查看>>
CentOS7搭建Kubernetes-dashboard管理服务
查看>>
buildroot下查找外部编译器通过ext-toolchain-wrapper调用的参数
查看>>
MySQL Replication 主主配置详细说明
查看>>
Linux的任务调度
查看>>
在Android studio中添加jar包方法如下
查看>>
iframe 在ie下面总是弹出新窗口解决方法
查看>>