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常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。
define宏在编译预处理阶段展开, const常量在编译阶段使用
2.类型安全检查不同
defined宏没有类型,不做类型检查,只做简单的展开
const常量有类型,在编译阶段会执行类型检查
3.存储方式不同
define定义的常量在替换后运行过程中会不断地占用内存,在内存中有若干份copy,而const定义的常量存储在数据段,只有一份copy,效率更高。
4.能否调试
define定义的常量不能被调试,const常量可以。
5.效率不同
编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。
2> define 与inline
1:宏define在预处理阶段完成;inline在编译阶段
2:类型安全检查:inline函数是函数:要做类型检查;
2:类型安全检查:inline函数是函数:要做类型检查;
3:替换方式:define字符串替换;inline是指嵌入代码,在编译过程中不单独产生代码,在调用函数的地方不是跳转,而是把代码直接写到那里去,对于短小的函数比较实用,且安全可靠。
0 0
- define,const与inlin
- #define 与 const
- #define 与 const
- static const与#define
- const 与define
- const 与 define
- #define 与const区别
- #define 与 const
- const与define
- define与const 区别
- 【引用】const与define
- const与#define
- 比较const与#define
- const与#define
- const与define
- const与#define
- const与define
- const与#define
- Android中使用Bitmap类将矩形图片转为圆形的方法
- Spark Transformation —— mapPartitions
- C++学习笔记——map与set的组合使用
- Java NIO使用及原理分析(三)
- 使用IntelliJ IDEA 15和Maven 开发Spring Data JPA + MVC Web应用
- define,const与inlin
- tjut 4882
- 并查集——求无向图的所有连通子图
- HDU 3709 Balanced Number
- ART世界探险(4) - 数据传送指令和桶型移位器
- Find MaxXorSum 字典树+DP
- MQ学习网站
- Ant+jmeter 实现自动化性能测试
- 二叉搜索树的java实现