两者只有恨小的区别,在C语言中,枚举为整型,枚举常量为int型,因此它们都可以和其他整型类别混用而不会出错,而且枚举优点众多;能自动赋值;调试器在检验枚举变量时,可以显示符号值;服从数据块作用域规则。具体而言,两者的区别表现在以下几个方面:
(1)枚举常量是实体中的一种,而宏定义不是实体。
(2)枚举常量属于常量,但宏定义不是常量。
(3)枚举量具有类型,但宏没有类型,枚举变量具有与普通变量相同的性质,如作用域,值等,但是宏没有。
(4)#define宏常量是在预编译阶段进行简单替换,枚举常量则是在编译的时候确定其值。
(5)一般在编译器里,可以调试枚举常量,但是不能调试宏常量。
(6)枚举可以一次定义大量相关的常量,而#define宏一次只能定义一个。