枚举和宏的区别

http://blog.sina.com.cn/s/blog_185268e880102xxkm.html

区别1:

宏是是在预编译阶段进行的文本替换,而枚举是在编译的阶段进行的处理的;

所以宏不能调试,枚举可以调试。

 

区别2:

宏定义时需要一条一条的定义,而枚举定义一次就可以了;

#define MON 1

#define TUES  2

#define WED   3

.........

 

enum

{

   MON,

   TUES,

   WED

  ........

};

 

枚举中的每一项元素都是常量,是不可以赋值的更改的,但是我们可以在声明枚举的时候给个初始值。

enum 

{

   MON,

   TUES = 2,

   WED

};

 

其中我们给TUES初始值2,那么WED默认为3   ,以此类推。

 

枚举是将一类型的信息集合在一起,而宏相对比较分散一点。

 

区别三:

宏作为指令存储在代码段(指令段)

枚举作为常量,存储在了数据区(rodata段)

 

而且枚举还会占用CPU的资源

你可能感兴趣的:(C语言)