define,const与inlin
2016-07-22 20:47
169 查看
1> define与const1.编译器处理阶段不同:
define宏在编译预处理阶段展开, const常量在编译阶段使用
2.类型安全检查不同
defined宏没有类型,不做类型检查,只做简单的展开
const常量有类型,在编译阶段会执行类型检查
3.存储方式不同
define定义的常量在替换后运行过程中会不断地占用内存,在内存中有若干份copy,而const定义的常量存储在数据段,只有一份copy,效率更高。
4.能否调试
define定义的常量不能被调试,const常量可以。
5.效率不同
编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。
2> define 与inline1:宏define在预处理阶段完成;inline在编译阶段
2:类型安全检查:inline函数是函数:要做类型检查;3:替换方式:define字符串替换;inline是指嵌入代码,在编译过程中不单独产生代码,在调用函数的地方不是跳转,而是把代码直接写到那里去,对于短小的函数比较实用,且安全可靠。
define宏在编译预处理阶段展开, const常量在编译阶段使用
2.类型安全检查不同
defined宏没有类型,不做类型检查,只做简单的展开
const常量有类型,在编译阶段会执行类型检查
3.存储方式不同
define定义的常量在替换后运行过程中会不断地占用内存,在内存中有若干份copy,而const定义的常量存储在数据段,只有一份copy,效率更高。
4.能否调试
define定义的常量不能被调试,const常量可以。
5.效率不同
编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。
2> define 与inline1:宏define在预处理阶段完成;inline在编译阶段
2:类型安全检查:inline函数是函数:要做类型检查;3:替换方式:define字符串替换;inline是指嵌入代码,在编译过程中不单独产生代码,在调用函数的地方不是跳转,而是把代码直接写到那里去,对于短小的函数比较实用,且安全可靠。
相关文章推荐
- 玉米田(cowfood)
- Css3元素浮动时居中
- hdu 1198 dfs水(连通性)
- 制作一个简单的网页爬虫爬取一张网页的特定图片
- EditText文本框来回抖动的实现
- Java NIO使用及原理分析 (四)
- 编写一个程序输出您的名字及地址。
- Linux基础入门
- 「前端知识框架」 -- 较全的前端知识
- Java量与变量的区别
- oracle数据库管理员简介、导入数据与导出数据
- 二叉搜索树的java实现
- MQ学习网站
- ART世界探险(4) - 数据传送指令和桶型移位器
- HDU 3709 Balanced Number
- Java NIO使用及原理分析(三)
- 网站前端设计——选择器
- 并查集——求无向图的所有连通子图
- 使用IntelliJ IDEA 15和Maven 开发Spring Data JPA + MVC Web应用
- 【HTML】快速掌握 html 常用标签