2012-07-11 142 views
4

我有這個簡單的代碼:Ç枚舉:未知類型名稱

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

int main(){ 
    enum Days { asd=0,Lun,Mar,Mer,Gio,Ven,Sab,Dom }; 
    Days TheDay; 
    time_t ltime; 
    struct tm *Tm; 

    ltime=time(NULL); 
    Tm=localtime(&ltime); 
    int j = Tm->tm_wday; 
    TheDay = Days(j); 

    printf("[%d] %d/%d/%d, %d:%d:%d\n", 
      TheDay, /* Mon - Sun */ 
      Tm->tm_mday, 
      Tm->tm_mon, 
      Tm->tm_year+1900, 
      Tm->tm_hour, 
      Tm->tm_min, 
      Tm->tm_sec); 
} 

我不明白爲什麼我得到這個錯誤:

try.c:6:5: error: unknown type name ‘Days’

+0

'天(j)'壞在c – BLUEPIXY 2012-07-11 15:32:11

+0

我該怎麼辦? – polslinux 2012-07-11 17:27:26

+0

在將枚舉值作爲int處理時使用。沒有意義'int j = Tm-> tm_wday; TheDay = Days(j);'only'Tm-> tm_wday'。或做功能。 – BLUEPIXY 2012-07-12 01:09:38

回答

19

這不是C:

enum Days { asd=0,Lun,Mar,Mer,Gio,Ven,Sab,Dom }; 
Days TheDay; 

新類型的名稱是enum Days而不是Days(它是枚舉標記)。

你必須使用:

enum Days { asd=0,Lun,Mar,Mer,Gio,Ven,Sab,Dom }; 
enum Days TheDay; 

或使用typedef:

typedef enum Days Days; 

能夠使用Days作爲一個類型名稱。

+3

也'typedef枚舉{...}天;'。 – You 2012-07-11 15:34:32

+1

此外,提問者可能習慣於C++,其中'enum Days'將Days聲明爲類型名稱以及枚舉。 – 2012-07-11 15:38:00