C 枚举 : unknown type name

标签 c enums

我有这个简单的代码:

#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’

最佳答案

这不是 C:

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

新类型的名称是 enum Days 而不是 Days(这是 enum 标签)。

你必须使用:

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

或使用类型定义:

typedef enum Days Days;

能够使用 Days 作为类型名称。

关于C 枚举 : unknown type name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11436063/

相关文章:

c - 为什么返回类型的存在使得不需要对参数进行前向声明?

c - 为什么 qsort() 没有返回值?

typescript - 如何在运行时获取 TypeScript 枚举类型的名称?

angular - 以 Angular 6 从命名空间导出的枚举导致运行时错误

objective-c - 基于另一个枚举 : String 在 Swift 中创建一个枚举,可导出到 ObjC

c - 结构体指针数组

c - 为什么我的 ICMP 序列号没有递增? (C 套接字编程)

c - 算术 double 表达式和 c/c++

java - Eclipse JDT ASTParser 错误地转换枚举声明节点

c# - 一次检查 3 个枚举值?