(1)从处理过程的角度看:
#define宏是由编译预处理器在预编译处理时处理的,而且只做简单的字符串的替换。枚举常量则是在编译的时候确定其值的。
(2)从调试的角度看:
通常情况下,在编译器里,可以调试枚举常量,而不能调试宏常量。
(3)从数据的类型看:
#define可以编译任意类型的常量,而枚举只能是定义整型常量。
(4)从代码编写角度看:
枚举可以一次定义大量常量,而#define宏只能一次定义一个。
(5)从可维护性来看:
枚举可以集中管理数据,具相同属性的整形数据可使用枚举,枚举可实现取值的自增,也可指定每个枚举的值,编写代码跟容易,相对来说能减少出错的机会,也便于代码的后期维护和修改。
(6)枚举的取值范围已经限定了,容易进行参数的检查,而define没有这种检查