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

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

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

5.1的Loader只调用lual_loadbuffer 加载模块,由require代码本身来执行模块,而5.3的searcher 设置的loader,须要本身来执行返回的模块函数

3:去掉了globaltable 须要在registry 中来获取globaltable,所以一些直接操做globaltable的接口须要调整ui

4:registry 的stack pos 调整了lua

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位整数,取不到值。get

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

相关文章
相关标签/搜索