我在代码中处理皮秒(数字大于10^12)。
将数据传递给lua的c代码(atime和eventid都是size\u t类型)
lua_getglobal ( luactx, "timer_callback" );
lua_pushunsigned ( luactx, atime );
lua_pushunsigned ( luactx, eventid );
lua_pcall ( luactx, 2, 0, 0 );
路厄函数
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_u pushnumber,但在lua中我得到了负数。
最佳答案
从5.3开始,lua支持lua_Integer
,默认为64位。从reference manual开始:
Luaa-整数
TyBufff…LuaYa整数;
lua中整数的类型。
默认情况下,此类型为long long(通常为64位双补整数),但可以将其更改为long或int,通常为32位双补整数。(见luaconf.h.中的lua_int。)
Lua还定义了常数LuaaMIn整型和LuaAuxMax整数,具有适合于这种类型的最小值和最大值。
lua 5.2lua可以很容易地通过编辑luaconf.h
强制使用不同的数字类型。数字类型定义为LUA_NUMBER
。
对于lua 5.1,您可以安装lnum补丁,它将更改整数类型。