我需要使用兩個integer
參數p1和p2來代表timeval
結構。 我已將tv_sec
複製到p1和tv_usec
到p2。 在32位(分)sizeof(long) = sizeof(int)
因此我能夠做到以上說的事情。複製timeval成員變量爲整數變量
但是在64位系統中,(sizeof(tv_sec)= 8)。
在64位系統中,我如何將這個tv_sec
分配給p1和p2作爲32位系統的?
我在下面的代碼中給出,
#include <iostream>
#include <sys/time.h>
using namespace std;
int main()
{
struct timeval mytime;
gettimeofday(&mytime, NULL);
cout << "tv_sec_1 : " << mytime.tv_sec << endl;
cout << "tv_usec_1 : " << mytime.tv_usec << endl;
int p1 = mytime.tv_sec;
int p2 = mytime.tv_usec;
}
我需要通過使用兩個自由整數變量 通過輸出傳遞到調用函數的結構,這些信息的timeval。我的目標不是修改結果結構。
我很困惑。 'gettimeofday()'** tv_usec值始終爲零。**。無論tv_usec爲0的機率總是不大可能。你確定你在這種情況下調用'gettimeofday(&mytime,NULL)';'在訪問'mytime'之前。除了您提供的示例中顯示的內容外,這裏看起來像是一個編碼錯誤。 – 2014-09-24 16:56:57
對不起,tv_usec值不總是0,我的代碼中有bug – Deepak 2014-09-25 09:19:52
'tv_usec'是微秒,所以會是一個從0到999,999的數字。這應該適合int沒有問題。如果'tv_sec'被存儲爲有符號的32位整數,它可以高達2^31-1(2147483647)。這對'UTC 2038-01-19 3:14:07'之後的日期造成了一個問題,因爲它將成爲一個負數並且回到1901年年底。如果你不關心2038年以後的工作, 01-19然後存儲在一個'int'應該工作。 – 2014-09-25 15:07:04