如何在switch和integer中使用enum

0 c enums compiler-errors switch-statement

我有enum头文件.

typedef enum{
     up = 8, down = 2, left = 4, right = 6
}direction;
Run Code Online (Sandbox Code Playgroud)

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

void sayTypeOfMove(int type){

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

}
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*ler 5

当c知道你正在处理枚举时,C理解枚举元素,所以正确的代码就是

void sayTypeOfMove(direction type){

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

}
Run Code Online (Sandbox Code Playgroud)

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