4

在 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

4 回答 4

6

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

不过,您可能想查看Boost.Date_TimeBoost非常有用且写得很好,它实际上是标准 C++ 库的一部分。

于 2010-02-04T08:56:45.893 回答
2

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

#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

于 2010-02-05T08:10:57.837 回答
0

我认为你应该可以使用 ctime 的东西

#include <ctime>

time
difftime
mktime

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

于 2010-02-04T08:38:02.630 回答
0
/usr/include/linux/time.h 

给出结构:-

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

在Linux上,也许你可以使用它......

于 2010-02-04T12:59:22.697 回答