【问题标题】:How to use enum in switch vs integer using如何在开关与整数中使用枚举
【发布时间】:2015-07-09 07:44:48
【问题描述】:

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

}

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

【问题讨论】:

  • direction.up.....:-) 毕竟它不是结构成员...
  • 至于你的问题,我认为找一本好书或教程可能是个好主意。
  • 在你问下一个问题之前,你可能是指'2', '4', '6' and '8' 而不是2,4,6, and 8 作为你的direction_t 枚举,假设你使用的是数字键盘和getchar() 或等效的......否则使用@987654327 @ ...对不起,我不能让自己使用类型作为变量名

标签: c enums compiler-errors switch-statement


【解决方案1】:

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

void sayTypeOfMove(direction type){

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

}

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

【讨论】:

    【解决方案2】:

    有这样的定义

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

    direction 是一个类型,它不是一个变量。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-24
      • 1970-01-01
      • 2012-03-04
      • 2013-02-14
      • 2015-03-17
      • 1970-01-01
      相关资源
      最近更新 更多