有没有更多的面向对象的替代使用gettimeofday()在Linux上的C + +? 我喜欢例如能够编写类似这样的代码:
DateTime now = new DateTime; DateTime duration = new DateTime(2300, DateTime.MILLISECONDS) DateTime deadline = now + duration; while(now < deadline){ DoSomething(); delete now; now = new DateTime() }
目标是一个embedded式Linux系统,没有Boost库,但也许有一些容易移植的东西(例如用头文件实现的东西)。
作为标准C ++库的一部分,没有面向对象的接口来处理时间和间隔。
不过你可能要看看Boost.Date_Time 。 Boost非常有用,写得很好,它实际上是标准C ++库的一部分。
所以移植提升不是我的目标的选择。 相反,我必须去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
我认为你应该使用ctime的东西来处理
#include <ctime> time difftime mktime
应该以非常便携的方式完成工作。 cplusplus.com
/usr/include/linux/time.h
给出结构: –
struct timeval { time_t tv_sec; /* seconds */ suseconds_t tv_usec; /* microseconds */ };
在Linux上,可能是你可以使用它…