【问题标题】:Why should ftime not be used?为什么不应该使用 ftime?
【发布时间】:2017-06-09 12:44:56
【问题描述】:

引用man 3 ftime:

此功能已过时。不要使用它。如果以秒为单位的时间足够,则可以使用 time(2); gettimeofday(2) 给出微秒; clock_gettime(2) 以纳秒为单位,但没有广泛使用。

为什么不应该使用它?有什么危害?

我知道time(2)gettimeofday(2)clock_gettime(2) 可以用来代替ftime(3),但是ftime(3) 给出的精确时间是毫秒,我觉得这很方便,因为毫秒是我需要的精确精度。

【问题讨论】:

  • 首先:它将被从库中删除,因为它已经过时了......
  • 过时的功能往往不太便携,并且可能有一天会在您最不期望的时候消失。最好使用标准且受支持的函数,例如 gettimeofday,并使用简单的算法来获取以毫秒为单位的时间。
  • 那么他们为什么要删除这么方便的功能。
  • "ftime(3) 精确地给出毫秒数" - 这有点误导。它可能会给你精确的毫秒,它可能不会 - 不能保证粒度。未指定结构中其他字段的设置。错误未指定...使用更现代的东西。 Int 除以 1000 在通常的平台上并不太贵。
  • 值得注意的是,ftime 在 2008 年之前一直在 POSIX 标准中——后来 POSIX 将其删除,因此它不再是任何标准函数,因此不再具有可移植性。

标签: c linux time


【解决方案1】:

这些建议旨在帮助您使程序可移植并避免各种陷阱。虽然ftime 函数可能不会从拥有它的系统中删除,但您的软件移植到的新系统可能没有它,并且您可能会遇到问题,例如如果时区的系统模型演变成ftime的结构格式不方便表达的东西。

【讨论】:

    猜你喜欢
    • 2018-02-13
    • 1970-01-01
    • 2010-12-22
    • 2014-03-25
    • 2010-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多