以下仅为个人理解,欢迎纠正
#define
预编译的时候会把程序中所有的宏定义常量替换成咱们定义的值,宏定义不占用内存
缺点:
1.在运行时每调用一次就会拷贝一次
2.宏定义没有数据类型检测,它只负责把定义的值替换成宏定义的常量
3.不便于调试,当程序报错错误信息会显示咱们定义的那个值而不是宏定义常量的名字
const
const用于修饰变量,使之变成只读变量(const常量?)
const有数据类型,在第一次调用的时候分配一次内存,之后不再分配,相当于访问之前的那块地址
enum
自定义一个数据类型,并且取值只能为我们自己定义枚举类型之内
其中的枚举类型可成为枚举常量,因为一旦定义无法再改变,比如
enum myenum{
A=500;
};
这样我们就能在其他地方使用A,且A不能改变;
缺点:枚举常量只能是整型