如何在switch和integer中使用enum

时间:2015-07-09 07:44:48

标签: c enums compiler-errors switch-statement

我在头文件中有enum

typedef enum{
     up = 8, down = 2, left = 4, right = 6
}direction;

我想使用枚举来识别移动的类型。 像这样:

void sayTypeOfMove(int type){

     switch(type){
          case direction.up:
                 printf("IT IS UP MOVE...");
                 break;
     }

}

代码无法编译,问题出在哪里?

2 个答案:

答案 0 :(得分:5)

C知道你知道你处理那个枚举时的enum元素,所以正确的代码将是

void sayTypeOfMove(direction type){

     switch(type){
          case up:
                 printf("IT IS UP MOVE...");
                 break;
     }

}

顺便说一句,type是一个非常糟糕的名字,因为它感觉非常像应该是一个保留的关键字。

答案 1 :(得分:2)

使用像

这样的定义
typedef enum{
     up = 8, down = 2, left = 4, right = 6
}direction;

direction类型,它不是变量。

您需要定义该类型的变量,然后使用该值。

请记住,enum根本没有成员变量访问概念。枚举器列表包含“枚举常量”。您可以直接使用它们作为值。