我在代码中处理皮秒(数字大于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补丁,它将更改整数类型。

07-24 20:20