C 如何在开关与整数中使用枚举

C 如何在开关与整数中使用枚举,c,enums,compiler-errors,switch-statement,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;

我在头文件中有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;
     }

}
代码没有编译,问题出在哪里?

定义如下

typedef enum{
     up = 8, down = 2, left = 4, right = 6
}direction;
方向是一种类型,不是变量

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


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

C在知道您正在处理该枚举时理解该枚举元素,因此正确的代码应该是

void sayTypeOfMove(direction type){

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

}

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

direction.up…:-毕竟它不是一个结构成员…即使对于这样一个简单的问题,考虑到代码,问题是显而易见的,在发布有关构建错误的问题时,您应该始终提供实际完整和未编辑的错误。至于您的问题,我认为寻找一本好书或教程可能是一个好主意。在您提出下一个问题之前,您可能指的是“2”、“4”、“6”和“8”,而不是2、4、6和8作为您的方向枚举,假设您使用的是数字键盘和getchar或等效工具。。。否则,请使用switchdirection-'0'{…很抱歉,我无法使用type作为变量名