- define在预处理阶段进行简单的替换,const在编译阶段使用
- define不做类型检查,仅仅展开替换,const有数据类型,会执行类型检查
- define不分配内存,仅仅展开替换,const会分配内存
- define不能调试,const可以调试
- define定义的常量在替换后运行过程中会不断地占用内存,而const定义的常量存储在数据段,只有一份copy,效率更高
- define可以定义一些简单的函数,const不可以
用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题)
#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)_U_LONG
意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。_U_LONG表示无符号长整型。