文档章节

Lua5.3相对于Lua5.1的变换

liyong2
 liyong2
发布于 2016/11/09 21:36
字数 423
阅读 122
收藏 1

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中 大整数的处理需要小心一些

© 著作权归作者所有

共有 人打赏支持
liyong2

liyong2

粉丝 49
博文 195
码字总数 64266
作品 0
广州
程序员
私信 提问
lua require路径设置实例

百度文章看不懂,自己写一个。 1.首先要强调的是,lua require的路径用的是斜杠"/",而不是从Windows文件属性那里复制来的反斜杠""。 2.通过 print(pagckage.path) 和print(package.cpath)打...

piger91
2018/04/14
0
0
ROS 中利用URDF 编写 Denso 机器人的一个简单模型——ROS机械臂学习笔记(一)

在ROS(Kinetic) 中利用URDF 编写 Denso 机器人的一个简单模型 Denso的URDF 模型主要是参照图1过来的,然后根据实际的情况进行了相应的修改。 在写模型过程中遇到的问题,在RVIZ 中的坐标系 ...

u014077947
2018/04/12
0
0
Lua rawget rawset newindex 函数定义和例子

在绝大多数情况下,我们都不会用到rawget和rawset。 本文的运行环境:lua 5.3 for windows rawset 赋值操作 rawset是在设置值的过程,进行处理,比如:当某个值改变时,触发事件。或修改某个...

赵青青
2018/11/28
0
0
Lua PYCHARM interpreter 怎么设置的?

系统:ubuntu 14.04 lua:sudo apt-get install lua5.1 IDE :PYCHARM ,使用的lua plugin for IDEA 运行LUA提示我 Executable is not specified 然后我设置 interpreter options 为"/usr......

勤用百度
2016/08/26
929
1
默认使用lua5.1,选用lua5.2或lua5.3运行demo均报错

这个软件似乎兼容性不行,选用lua5.2,或lua5.3运行程序均报错。

hac2009
2015/05/18
676
2

没有更多内容

加载失败,请刷新页面

加载更多

Java单例模式学习记录

在项目开发中经常能遇见的设计模式就是单例模式了,而实现的方式最常见的有两种:饿汉和饱汉(懒汉)。由于日常接触较多而研究的不够深入,导致面试的时候被询问到后有点没底,这里记录一下学习...

JerryLin123
昨天
3
0
VSCODE 无法调试

VSCODE 无法调试 可以运行 可能的原因: GCC 的参数忘了加 -g

shzwork
昨天
4
0
理解去中心化 稳定币 DAI

随着摩根大通推出JPM Coin 稳定币,可以预见稳定币将成为区块链落地的一大助推器。 坦白来讲,对于一个程序员的我来讲(不懂一点专业经济和金融),理解DAI的机制,真的有一点复杂。耐心看完...

Tiny熊
昨天
4
0
5.线程实现

用于线程实现的Python模块 Python线程有时称为轻量级进程,因为线程比进程占用的内存少得多。 线程允许一次执行多个任务。 在Python中,以下两个模块在一个程序中实现线程 - _thread 模块 th...

Eappo_Geng
昨天
6
0
ServiceLoader

创建一个接口文件在resources资源目录下创建META-INF/services文件夹在services文件夹中创建文件,以接口全名命名创建接口实现类 内容me.zzp.ar.d.PostgreSQLDialectme.zzp.ar.d.Hype...

Cobbage
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部