关于define
1.用预处理指令#define声明一个常数,用以表示一年中有多少秒(忽略闰年问题)
define SECONDS_PER_YEAR (60 60 24 *365)UL (UL为无符号长整形)
2.写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个
define MIN(A,B) ( (A) >=(B) ? (A) : (B) )
define定义的宏和const定义的常量有什么区别
答:
- define定义宏的指令,程序会在预处理阶段将用define所定义的内容进行替换,因此程序在运行时,常量表中并没有用define定义的宏,系统并不为它分配内存,而且在编译时不会检查数据类型,出错的概率会大一些。
- 而用const定义的常量,在程序运行时是存在常量表中,系统会为他分配内存,而且在编译时会进行类型检查。
- 在使用define有一个注意点,就是要注意define的边缘效应。
- define在预处理阶段进行替换,const常量在编译阶段使用
- 宏不做类型检查,仅仅进行替换,const常量有数据类型,会执行类型检查
- define不能调试,const常量可以调试
- define定义的常量在替换后运行过程中会不断地占用内存,而const定义的常量存储在数据段只有一份copy,效率更高