define,const与inlin

来源:互联网 发布:尼古丁的好处 知乎 编辑:程序博客网 时间:2024/05/17 03:31
1>  define与const
1.编译器处理阶段不同:
define宏在编译预处理阶段展开, const常量在编译阶段使用
2.类型安全检查不同
defined宏没有类型,不做类型检查,只做简单的展开
const常量有类型,在编译阶段会执行类型检查
3.存储方式不同
define定义的常量在替换后运行过程中会不断地占用内存,在内存中有若干份copy,而const定义的常量存储在数据段,只有一份copy,效率更高。
4.能否调试
define定义的常量不能被调试,const常量可以。
5.效率不同
编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。


2> define 与inline
1:宏define在预处理阶段完成;inline在编译阶段
2:类型安全检查:inline函数是函数:要做类型检查;
3:替换方式:define字符串替换;inline是指嵌入代码,在编译过程中不单独产生代码,在调用函数的地方不是跳转,而是把代码直接写到那里去,对于短小的函数比较实用,且安全可靠。


0 0
原创粉丝点击