如何重置 Ada.Real_Time.Clock?

Yon*_*ony 5 real-time ada clock reset

在上电后立即读取 Ada.Real_Time.Clock 时,它显示的值不接近零,有时甚至是负值。据我所知 Ada.Real_Time.Clock 假设在上电时重置。如何重置 Ada.Real_Time.Clock?

谢谢。

Mar*_*c C 6

Ada 2005 LRM 声明“实时被定义为在外部环境中观察到的物理时间。[强调添加--MC]

“语言没有规定时间值是否与任何标准时间参考同步。例如,E可以对应系统初始化的时间,也可以对应某个时间标准的纪元。” ( D.8 [18-19])

正如它所说的那样,Ada 不要求“E”,即作为实时时间值的“零时间”的纪元的开始,对应于任何特定的起点;它留给编译器实现者。

无论您观察到的 Time 实例的具体数值,无论是接近零还是远离零、正数或负数,都完全取决于编译器实现者对 E 的选择、它如何表示时间值,以及它如何相应地实现实时能力。

因此,您应该避免编写依赖于特定的、已知的 Time 值的代码,也不应该编写需要 Time 值可密切操作的代码。

Real_Time.Time 值应被视为抽象数量。