2010-02-04 93 views
3

是否有更多的面向對象的替代方法在Linux上使用C++中的gettimeofday()?我喜歡實例能夠編寫類似的代碼如下:什麼是在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

哦,哎呀,我錯過了「沒有助推庫」條款。 *嘆* – Omnifarious 2010-02-04 09:01:13

+2

那麼,Boost.Date_Time應該很容易移植。另外,你真的不應該用'new'來分配本地對象,特別是在嵌入式系統上。 – 2010-02-04 13:33:02

回答

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

0

我想你應該罰款用的東西從的ctime

#include <ctime> 

time 
difftime 
mktime 

應該做的工作在一個非常便攜的方式。 cplusplus.com

+0

我看着這個,但分辨率太粗糙了。我想下降到毫秒分辨率。 – mikelong 2010-02-04 08:45:39

6

沒有面向對象的接口來處理時間和間隔,這是標準C++庫的一部分。

雖然你可能想看看Boost.Date_TimeBoost非常有用,寫得很好,它實際上是標準C++庫的一部分。

0
/usr/include/linux/time.h 

給出結構: -

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

在Linux上,可能是你可以使用它...