const与#define的特点与区别
define 只能用来做文本替换,编译器会在预处理阶段完成所有的宏替换,然后进行编译,因此define的生命周期停止于编译期。它存在程序的代码段中,而实际程序中它只是一个常数,一个命令中的参数,并没有实际的存在。
而const常量存放在程序的数据段,并在堆栈上分配了空间,它在程序中确确实实的存在者并可以被调用传递,const常量有数据类型,而宏常量没有数据类型。编译器可以对const常量进行类型安全检查而不对宏进行安全检查。
define 只能用来做文本替换,编译器会在预处理阶段完成所有的宏替换,然后进行编译,因此define的生命周期停止于编译期。它存在程序的代码段中,而实际程序中它只是一个常数,一个命令中的参数,并没有实际的存在。
而const常量存放在程序的数据段,并在堆栈上分配了空间,它在程序中确确实实的存在者并可以被调用传递,const常量有数据类型,而宏常量没有数据类型。编译器可以对const常量进行类型安全检查而不对宏进行安全检查。