2013-06-20 125 views
0

我試圖運行從this simple example of a timer採取下面的代碼片段:現場tv_sec無法解析

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

int SetTimer(struct timeval &tv, time_t sec) { 
    gettimeofday(&tv, NULL); 
    tv.tv_sec += sec; 

    return 1; 
} 

int CheckTimer(struct timeval &tv, time_t sec) { 
    struct timeval ctv; 
    gettimeofday(&ctv, NULL); 

    if ((ctv.tv_sec > tv.tv_sec)) { 
     gettimeofday(&tv, NULL); 
     tv.tv_sec += sec; 
     return 1; 
    } else { 
     return 0; 
    } 
} 

int main() { 
    struct timeval tv; 
    SetTimer(tv, 5); //set up a delay timer 
    printf("start counting.\n"); 
    while (1) 
     if (CheckTimer(tv, 5) == 1) 
      printf("Welcome to cc.byexamples.com\n"); 
    return 0; 
} 

我獲得以下錯誤:場tv_sec無法解析

...我已經尋找它在網上,但似乎沒有人給出具體的答案。

我試過我的機會看着圖書館sys/time.htime.h,但沒有一個似乎被定義這種結構,但無論如何被使用。

我是否缺少任何圖書館?既然這個例子比較陳舊,那麼需要改變的東西是否需要以不同的方式來完成呢?我希望看到任何景象。 PS:我在Ubuntu 11.10和g ++ 4.6.1下使用Eclipse CDT Indigo。

+0

請在您的問題中包含代碼(您指向的鏈接至少有兩個代碼示例),並向我們顯示確切的錯誤消息,包括報告的行號。第一個例子用g ++編譯(在我將'>'更改爲'''由於複製粘貼問題)。 –

回答

0

它到底是一個Eclipse的問題,因爲它無法索引time.h庫。我通過遵循this other SF question的最上面的回答來解決它:

手動向C/C++索引器添加time.h

目前我正在使用Eclipse CDT Juno,問題似乎不再發生。作爲Eclipse CDT Juno中的一條評論,我無法找到手動編輯C/C++索引器設置的位置。

0

嘗試把這個在你的文件:#定義__USE_GNU

+0

感謝您的回答,但我已經嘗試過,因爲結構似乎只有當它存在這樣的定義時纔可用,但它給了我:警告:「__USE_GNU」重新定義[默認情況下啓用] – gantzer89

相關問題