一.处理过程
1.宏定义:它是由编译处理器在预编译的时候处理的,在代码当中只做简单的字符串的替换(整体替换)
2.枚举类型:枚举常量在编译的时候就已经确定了它的值
3.const:它具有具体的类型,在编译阶段会执行类型检查,当试图修改该变量的时候,编译器会报错
二.数据类型
1.宏定义:可以处理任意的数据类型
2.枚举:只能处理整形(char也属于整形)
3.const:可以指定任意类型的数据为常量
三.定义数量
1.宏定义:一次只能定义一个
2.枚举:一次可以定义大量的常量
四.开辟空间
1.宏定义:它只是在程序的开头定义了一个字符常量,并不分配内存空间,因此根本不用占用内存。在预编译之后有变量调用这个宏时会开辟内存空间
2.枚举:枚举常量是要占用内存的,它在定义的时候需要开辟一段空间来存放定义的常量
3.const:在内存中分配,可以是堆中也可以是栈中
五.内存的使用
1.宏定义:宏每进行一次替换就需要分配一次内存空间,比较费内存
2.枚举:实质上是常数所占内存空间的大小(int型),枚举类型所占内存大小也是这样
3.const:const定义的常量从汇编的角度来看,只是给出了相对应的内存地址。因此,const在调用的时候只会分配一次内存地址