Time Ada中时间跨度和时间的数据类型

Time Ada中时间跨度和时间的数据类型,time,ada,Time,Ada,Ada语言中时间和时间跨度的数据类型是什么。这种类型的变量是如何存储在内存中的?在内存中定义了一种名为Time的类型。此类型的内存布局由实现定义。中定义了一个名为时间的类型。此类型的内存布局由实现定义。来自 package Calendar中Time类型的值或其他某种时间类型的值表示由相应时钟报告的时间 Time_Span类型的值表示实时持续时间的长度 简而言之,时间类型表示时间戳,时间跨度类型表示时间段的持续时间。From package Calendar中Time类型的值或其他某种时间

Ada语言中时间和时间跨度的数据类型是什么。这种类型的变量是如何存储在内存中的?

在内存中定义了一种名为
Time
的类型。此类型的内存布局由实现定义。

中定义了一个名为
时间的类型。此类型的内存布局由实现定义。

来自

  • package Calendar中Time类型的值或其他某种时间类型的值表示由相应时钟报告的时间
  • Time_Span类型的值表示实时持续时间的长度
简而言之,时间类型表示时间戳,时间跨度类型表示时间段的持续时间。

From

  • package Calendar中Time类型的值或其他某种时间类型的值表示由相应时钟报告的时间
  • Time_Span类型的值表示实时持续时间的长度

简而言之,时间类型代表时间戳,时间跨度类型代表时间段的持续时间。

只要看一下Ada.Real\u Time.Time\u Span
,就会说
类型时间跨度是私有的
此外,他说

Time_Span类型的值表示实时持续时间的长度

第一次的时间不得大于–3600秒,最后一次的时间不得小于3600秒

这些语句是可移植Ada程序可以依赖的全部

现在,专门针对GNAT,我们可以查看上的实际实现,其中

(注意,这是针对桌面系统的:对于嵌入式系统,类型和值可能不同)


因此答案是,在桌面GNAT上,
Time
Time\u Span
都存储为64位值,最低有效位为1纳秒。

只要看一下
Ada.Real\u Time.Time\u Span
,就知道
type Time\u Span是私有的
此外,他说

Time_Span类型的值表示实时持续时间的长度

第一次的时间不得大于–3600秒,最后一次的时间不得小于3600秒

这些语句是可移植Ada程序可以依赖的全部

现在,专门针对GNAT,我们可以查看上的实际实现,其中

(注意,这适用于桌面系统:对于嵌入式系统,类型和值可能不同)


因此答案是,在桌面GNAT上,
Time
Time\u Span
都存储为64位值,最低有效位为1纳秒。

您为什么想知道?(这将对答案产生影响)我想知道它们是如何存储在内存中的?例如:Ada.Real_Time.Time_Span:=Ada.Real_Time.millizes(3)是如何存储在内存中的?我的意思是,为什么需要知道它们是如何存储在内存中的?如果只是好奇,好吧,但是如果你需要在一台机器上将它们传递到另一种语言,或者通过网络传递到另一个系统,事情会变得更复杂。我正在调试一个问题,我正在检查CAN消息的周期,这进一步用于确定CAN速率是否正确?你为什么想知道?(这将对答案产生影响)我想知道它们是如何存储在内存中的?例如:Ada.Real_Time.Time_Span:=Ada.Real_Time.millizes(3)是如何存储在内存中的?我的意思是,为什么需要知道它们是如何存储在内存中的?如果只是好奇,好吧,但是如果你需要在一台机器上将它们传递到另一种语言,或者通过网络传递到另一个系统,事情会变得更复杂。我正在调试一个问题,我正在检查CAN消息的周期,这进一步被用来确定CAN速率是否正确?
--  Time and Time_Span are represented in 64-bit Duration value in
--  nanoseconds. For example, 1 second and 1 nanosecond is represented
--  as the stored integer 1_000_000_001. This is for the 64-bit Duration
--  case, not clear if this also is used for 32-bit Duration values.

type Time is new Duration;

Time_First : constant Time := Time'First;

Time_Last  : constant Time := Time'Last;

type Time_Span is new Duration;