const用于定义常量;而define用于定义宏,而宏也可以用于定义常量。都用于常量定义时,它们的区别有:
- 生效阶段: const生效于编译的阶段;define生效于预处理阶段。
- 是否分配内存:
- const定义的常量,在静态存储区中分配空间,在程序运行过程中 const 仅有一个拷贝;
- define定义的常量,会在预处理阶段进行替换,运行时是直接的操作数,在程序运行过程中使用了多少次就会有多少次拷贝,所以其消耗的内存会比 const 大得多。
- 类型检查: const定义的常量是带类型的;define定义的常量不带类型。因此define定义的常量不利于类型检查。
