const和define的区别

区别:

  1. const定义的常量有数据类型,define定义的常量没有数据类型

  2. const定义的常量,编译器会做类型检测,而define定义的常量只是简单的替换,不会做类型安全检测。

  3. const的类型检测是在编译阶段处理的,而define是预处理命令,是在预处理阶段进代码替换的。

  4. const常量存住在数据段,而define的常量被放在代码段。即前者在堆栈分配了空间,而后者只是把具体数值传递到了变量。


#define的优势是什么

从写编译器的角度来讲,最大的优势是简单,因为预处理器可以解决掉这个define,编译器不需要处理。

还有个优点,在头文件中使用define可以避免头文件重复包含的问题,这个功能const是无法取代的。




你可能感兴趣的:(const和define的区别)