区别1:
宏是是在预编译阶段进行的文本替换,而枚举是在编译的阶段进行的处理的;
所以宏不能调试,枚举可以调试。
区别2:
宏定义时需要一条一条的定义,而枚举定义一次就可以了;
#define MON 1
#define TUES 2
#define WED 3
.........
enum
{
MON,
TUES,
WED
........
};
枚举中的每一项元素都是常量,是不可以赋值的更改的,但是我们可以在声明枚举的时候给个初始值。
enum
{
MON,
TUES = 2,
WED
};
其中我们给TUES初始值2,那么WED默认为3 ,以此类推。
枚举是将一类型的信息集合在一起,而宏相对比较分散一点。
区别3:
宏作为指令存储在代码段(指令段)
枚举作为常量,存储在了数据区(rodata段)
而且枚举还会占用CPU的资源
http://blog.sina.com.cn/s/blog_185268e880102xxkm.html