【问题标题】:C enum: unknown type nameC 枚举:未知类型名称
【发布时间】:2012-07-11 15:26:34
【问题描述】:

我有这个简单的代码:

#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: 错误:未知类型名称“Days”

【问题讨论】:

  • 在将枚举值处理为 int 时按原样使用。没有意义int j = Tm-&gt;tm_wday; TheDay = Days(j); 只有Tm-&gt;tm_wday。或制作函数。

标签: c enums


【解决方案1】:

这不是 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 作为类型名称。

【讨论】:

  • 还有typedef enum { ... } Days;
  • 此外,提问者可能习惯于 C++,其中enum Days 将 Days 声明为类型名称和枚举。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-28
  • 1970-01-01
  • 1970-01-01
  • 2018-10-27
  • 2013-07-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多