宏定义 枚举类型 const之间的区别

来源:互联网 发布:淘宝买便宜东西的软件 编辑:程序博客网 时间:2024/06/13 08:36

一.处理过程

1.宏定义:它是由编译处理器在预编译的时候处理的,在代码当中只做简单的字符串的替换(整体替换)

2.枚举类型:枚举常量在编译的时候就已经确定了它的值

3.const:它具有具体的类型,在编译阶段会执行类型检查,当试图修改该变量的时候,编译器会报错

二.数据类型

1.宏定义:可以处理任意的数据类型

2.枚举:只能处理整形(char也属于整形)

3.const:可以指定任意类型的数据为常量

三.定义数量

1.宏定义:一次只能定义一个

2.枚举:一次可以定义大量的常量

四.开辟空间

1.宏定义:它只是在程序的开头定义了一个字符常量,并不分配内存空间,因此根本不用占用内存。在预编译之后有变量调用这个宏时会开辟内存空间

2.枚举:枚举常量是要占用内存的,它在定义的时候需要开辟一段空间来存放定义的常量

3.const:在内存中分配,可以是堆中也可以是栈中

五.内存的使用

1.宏定义:宏每进行一次替换就需要分配一次内存空间,比较费内存

2.枚举:实质上是常数所占内存空间的大小(int型),枚举类型所占内存大小也是这样

3.const:const定义的常量从汇编的角度来看,只是给出了相对应的内存地址。因此,const在调用的时候只会分配一次内存地址