const与define

前言

笔试题碰到了这俩货,查询一番,Oh,久违的C语言~

区别

const define
编译器处理方式不同 常变量,在编译运行阶段使用 宏定义,常数,在预编译阶段展开
类型和安全检查不同 有具体的类型,在编译阶段时执行类型检查 没有类型,只是简单的字符串替换,不做任何类型检查
存储方式 在内存中分配 不分配内存,有多少地方使用,就展开多少次
可以调试 不能调试,预编译阶段已经替换,调试时没有它了
不能重定义 可以使用undef取消某个定义,再重定义