1、枚举类型的可读性

枚举类型比宏定义好的一个重要原因就是可读性。宏定义实际上是一种文本的替换,把宏定义的名称替换成定义的内容,而枚举类型是一种类型,它定义了一组有意义的值,比如:

enum color {
    red,
    green,
    blue
};

枚举类型可以把一组有意义的值定义出来,这样可以更加清晰的表达程序的意图,而宏定义只是一个简单的文本替换,不能表达程序的意图,而且容易出错,因此枚举类型比宏定义更加可读。

2、枚举类型的类型安全

枚举类型比宏定义好的另外一个原因就是类型安全。宏定义实际上是一种文本的替换,它把宏定义的名称替换成定义的内容,但是它没有类型检查,所以容易出现类型不匹配的错误,而枚举类型是一种类型,它可以限定变量只能取枚举类型定义的值,所以枚举类型比宏定义更加安全。

3、枚举类型的可扩展性

枚举类型比宏定义好的另外一个原因就是可扩展性。宏定义实际上是一种文本的替换,它把宏定义的名称替换成定义的内容,它不能像枚举类型那样把一组有意义的值定义出来,而枚举类型是一种类型,它可以定义出一组有意义的值,当需要添加新的值的时候,只需要在枚举类型中添加新的值即可,而不需要修改已有的代码,因此枚举类型比宏定义更加可扩展。