我在代码中处理皮秒(数字> 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 );
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
我尝试使用lua_pushnumber,但结果是lua我得到了负数.
Lua,从5.3开始支持lua_Integer,默认为64位.从参考手册:
lua_Integer
typedef ... lua_Integer;
Lua中的整数类型.
默认情况下,此类型为long long(通常为64位二进制补码整数),但可以更改为long或int,通常为32位二进制补码整数.(请参阅luaconf.h中的LUA_INT.)Lua还定义了常量LUA_MININTEGER和LUA_MAXINTEGER,其中包含适合此类型的最小值和最大值.
通过编辑可以相当容易地强制使用Lua 5.2 lua使用不同的数字类型luaconf.h.数字类型定义为LUA_NUMBER.
对于lua 5.1,您可以安装lnum补丁,它将更改整数类型.