const常量与define宏定义的区别
来源:互联网 发布:js中有哪些事件 编辑:程序博客网 时间:2024/04/28 12:05
#define RADIUS 100;
const float RADIUS = 100;
(1) 编译器处理方式不同
define宏是在预处理阶段展开。
const常量是编译运行阶段使用。
(2) 类型和安全检查不同
define宏没有类型,不做任何类型检查,仅仅是展开。
const常量有具体的类型,在编译阶段会执行类型检查。
(3) 存储方式不同
define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存。(宏定义不分配内存,变量定义分配内存。)
const常量会在内存中分配(可以是堆中也可以是栈中)。
(4)const 可以节省空间,避免不必要的内存分配。 例如:
#define PI 3.14159 //常量宏
const doulbe Pi=3.14159; //此时并未将Pi放入ROM中 ......
double i=Pi; //此时为Pi分配内存,以后不再分配!
double I=PI; //编译期间进行宏替换,分配内存
double j=Pi; //没有内存分配
double J=PI; //再进行宏替换,又一次分配内存!
const定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是象#define一样给出的是立即数,所以,const定义的常量在程序运行过程中只有一份拷贝(因为是全局的只读变量,存在静态区),而 #define定义的常量在内存中有若干个拷贝。
(5) 提高了效率。 编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。
(6) 宏替换只作替换,不做计算,不做表达式求解;
宏预编译时就替换了,程序运行时,并不分配内存。
转自:http://blog.csdn.net/love_gaohz/article/details/7567856
- const常量与define宏定义的区别
- const常量与define宏定义的区别
- C/C++: const常量与define宏定义的区别
- const常量与define宏定义的区别
- const常量与define宏定义的区别
- const常量与define宏定义的区别
- const常量与define宏定义的区别
- const常量与define宏定义的区别
- const常量与define宏定义的区别
- const常量与define宏定义的区别
- const常量与define宏定义的区别
- const常量与define宏定义的区别
- const常量与define宏定义的区别
- const常量与define宏定义的区别
- const常量与define宏定义的区别
- define宏定义和const常量定义之间的区别
- define宏定义和const常量定义之间的区别
- define宏定义和const常量定义之间的区别
- struts2实现管理员和普通用户登陆时分别跳转到不同页面
- (python解析js)selenium结合phantomjs抓取js生成的页面
- hdoj1114
- 访问第三方服务
- JAVA数组排序——二分(折半)查找
- const常量与define宏定义的区别
- VLC架构及流程分析
- 测试您的DB2数据库:用JMeter测量性能
- Apache使用mod_jk/mod_proxy模块实现代理、负载均衡的配置
- POJ 1275Cashier Employment (差分约束 + spfa)
- Android之XmlSerializer生成xml文件
- vs中如何统计整个项目的代码行数
- ZOJ - 3869 Ace of Aces (水)
- JavaScript的对象属性的两种访问方式