在C ++中gettimeofday()的最佳替代库是什么?

时间:2010-02-04 08:27:24

标签: c++ linux time embedded gettimeofday

在Linux上使用C ++中的gettimeofday()是否有更多面向对象的替代方案?我喜欢能够编写类似于此的代码:

DateTime now = new DateTime;
DateTime duration = new DateTime(2300, DateTime.MILLISECONDS)
DateTime deadline = now + duration;

while(now < deadline){
    DoSomething();
    delete now;
    now = new DateTime()
}

目标是一个嵌入式Linux系统,并且没有Boost库,但也许有一些容易移植的东西(例如仅使用头文件实现的东西)。

4 个答案:

答案 0 :(得分:6)

没有面向对象的接口来处理标准C ++库中的时间和间隔。

您可能希望查看Boost.Date_TimeBoost非常有用且写得很好,几乎是标准C ++库的一部分。

答案 1 :(得分:2)

所以移植提升不是我的目标的选择。相反,我不得不使用gettimeofday()。然而,有一些很好的宏来处理sys/time.h

中的timeval结构
#include <sys/time.h>

void timeradd(struct timeval *a, struct timeval *b,
          struct timeval *res);

void timersub(struct timeval *a, struct timeval *b,
          struct timeval *res);

void timerclear(struct timeval *tvp);

void timerisset(struct timeval *tvp);

void timercmp(struct timeval *a, struct timeval *b, CMP);

虽然因为它们不在我机器上的手册页中而花了一段时间才找到它们。看这个页面: http://linux.die.net/man/3/timercmp

答案 2 :(得分:0)

我认为使用ctime中的东西你应该没问题

#include <ctime>

time
difftime
mktime

应该以非常便携的方式完成工作。 cplusplus.com

答案 3 :(得分:0)

/usr/include/linux/time.h 

给出结构: -

struct timeval {
    time_t      tv_sec;     /* seconds */
    suseconds_t tv_usec;    /* microseconds */
};
Linux上的

,也许你可以使用它......