在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库,但也许有一些容易移植的东西(例如仅使用头文件实现的东西)。
答案 0 :(得分:6)
没有面向对象的接口来处理标准C ++库中的时间和间隔。
您可能希望查看Boost.Date_Time。 Boost非常有用且写得很好,几乎是标准C ++库的一部分。
答案 1 :(得分:2)
所以移植提升不是我的目标的选择。相反,我不得不使用gettimeofday()。然而,有一些很好的宏来处理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
答案 2 :(得分:0)
答案 3 :(得分:0)
/usr/include/linux/time.h
给出结构: -
struct timeval {
time_t tv_sec; /* seconds */
suseconds_t tv_usec; /* microseconds */
};
Linux上的,也许你可以使用它......