2013-03-13 21 views
0

我希望你們中的一些編碼天才可能會幫助像我這樣的編碼受損個體。我必須創建這個程序,在我之前創建的另一個程序上添加時間戳。現在,我正在嘗試使用C++中的gettimeofday函數獲取時間(我們正在Unix btw中執行此操作)。一些幫助使用結構,參考和gettimeofday函數

無論如何,我有一小段代碼準備編譯,除了我不斷收到2個特定的錯誤。也許,如果有人可以幫助我在這方面也給我的代碼看起來到目前爲止那簡直太好了一些建議......

#include <curses.h> 
#include <sys/time.h> 
#include <time.h> 

ExpandedTime* localTime(struct timeval* tv, ExpandedTime* etime); 

struct ExpandedTime 
{ 
    double et_usec; 
    double et_sec; 
    double et_min; 
    double et_hour; 

}; 

int main() 
{ 
    struct timeval tv; 
    struct ExpandedTime etime; 
    gettimeofday(&tv, NULL); 
    localTime(tv, ExpandedTime); 

} 

ExpandedTime* localTime(struct timeval* tv, ExpandedTime* etime) 
{ 

} 

基本上現在我只是想正常使用gettimeofday的,以及將定義爲tv的timeval結構和擴展的時間結構傳遞給實際的本地時間函數....但是第33行,我稱爲localtime函數給了我2個特定的錯誤。

  1. 本地時間並沒有在這個範圍中聲明
  2. 預期主要表達之前「)」令牌

任何幫助將不勝感激......的expandedtime功能是假設接收gettimeofday的值存儲在我認爲包含的頭文件之一的某個結構中。

回答

2
ExpandedTime* localTime(struct timeval* tv, ExpandedTime* etime); 

此時,編譯器不知道什麼是ExpandedTime。你必須在聲明後移動它。

還你:

localTime(tv, ExpandedTime); 

這應該是:

localTime(tv, &etime); 
+0

哦非常感謝你。如果我可能會問,ExpandedTime只是我在開始時聲明的一個函數... iirc這是在程序中設置函數的標準方式......爲什麼編譯器無法識別它是什麼? – PresidentRFresh 2013-03-13 01:01:17

+0

@ user2163350我*希望*你的意思是說*「**本地時間**只是一個功能...」*(和+1,大衛。很好的答案。) – WhozCraig 2013-03-13 01:02:59

+0

是的,我的道歉。 localTime – PresidentRFresh 2013-03-13 01:03:35

0

我推薦使用的typedef與結構,以簡化調用它們。 (我真的無法得到上面的編譯。)

通常,你需要使用「strut ExpandedTime」無處不在,我會想。

我知道如何只使用「ExpandedType」單獨作爲一個結構是typedef定義它,使用的唯一方法:

typedef struct expanded_time_struct { 
// your struct's data 
} ExpandedTime; 

所以你的情況,是這樣的:

typedef struct ExpandedTime_struct 
{ 
    double et_usec; 
    double et_sec; 
    double et_min; 
    double et_hour; 

} ExpandedTime; 

ExpandedTime* localTime(struct timeval* tv, ExpandedTime* etime); 
int main() 
{ 
    struct timeval tv; 
    ExpandedTime etime; 
    gettimeofday(&tv, NULL); 
    localTime(&tv, &etime); 

} 

ExpandedTime* localTime(struct timeval* tv, ExpandedTime* etime) 
{ 

}