我在代码中处理皮秒(数字> 10 ^ 12) 将数据传递给Lua的C代码(atime和eventid都是size_t类型)
lua_getglobal ( luactx, "timer_callback" );
lua_pushunsigned ( luactx, atime );
lua_pushunsigned ( luactx, eventid );
lua_pcall ( luactx, 2, 0, 0 );
Lua功能
function timer_callback(time, eventid)
if eventid == TX_CLOCK then
out_log(tostring(time)) --result is random garbage
set_callback(time + 1000000000000, TX_CLOCK)
return
end
end
我尝试使用lua_pushnumber,但结果是lua我得到了负数。
答案 0 :(得分:5)
Lua,从5.3开始,支持lua_Integer
,默认为64位。来自reference manual:
<强> lua_Integer 强>
typedef ... lua_Integer;
Lua中的整数类型。
默认情况下,此类型为long long(通常为64位二重补码整数),但可以更改为long或int,通常为32位二补码整数。 (参见luaconf.h中的LUA_INT。) Lua还定义了常量LUA_MININTEGER和LUA_MAXINTEGER,其中包含适合此类型的最小值和最大值。
通过编辑luaconf.h
,可以相当容易地强迫Lua 5.2 lua使用不同的数字类型。数字类型定义为LUA_NUMBER
。
对于lua 5.1,您可以安装lnum补丁,这将改变整数类型。