原创 enum

2009-1-11 15:07 2916 3 3 分类: 软件与OS

在C语言中有一种对软件工程来讲,可以大大提高程序可读性的数据类型,那就是枚举(enum)。一般的定义方式如下:


enum enum_type_name{ 

   
ENUM_CONST_1,

   
ENUM_CONST_2,

  ...

   
ENUM_CONST_n

} enum_variable_name;

enum_type_name是自定义的一种数据数据类型,而enum_variable_name为enum_type_name类型的一个变量。实际
上enum_type_name类型是对一个变量取值范围的限定,而花括号内是它的取值范围,即enum_type_name 类型的变量
enum_variable_name只能取值为花括号内的任何一个值,如果赋给该类型变量的值不在列表中,则会报错或者警告。



实际上在此定义了一组常量:ENUM_CONST_1、ENUM_CONST_2、...、ENUM_CONST_n,这些常量可以用来给任何一种类型的数据赋值,在这种意义下与#define定义的常量几乎没有区别。


enum变量类型还可以给其中的常量符号赋值,如果不赋值则会从被赋初值的那个常量开始依次加1,如果都没有赋值,它们的值从0开始依次递增1。如分别用一个常数表示不同颜色


typedef enum{

GREEN = 1,

RED,

BLUE,

GREEN_RED = 10,

GREEN_BLUE

}Color.

其中各常量名代表的数值分别为:

GREEN = 1

RED = 2

BLUE = 3

GREEN_RED = 10

GREEN_BLUE = 11

在软件的设计中或许是这样用的:
typedef enum tagHV_COMMAND_CODE { 
      CMD_GET_BYTE_PER_PACKET   = 0x10,
      CMD_SET_BYTE_PER_PACKET   = 0x11,
      CMD_FRAME_SHOT            = 0x12,
      CMD_FRAME_SHOT_FINISH     = 0x13,
      CMD_GET_LUT_DWENTRIES     = 0x14,
      CMD_SET_LUT_DWENTRIES     = 0x15,
      CMD_SPEC_FUN_INTERFACE1   = 0x80
    } HV_COMMAND_CODE;
在一个数据类型的里面定义具体的变量,这样在程序使用的时候更方便。

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
3
关闭 站长推荐上一条 /3 下一条