const常量和#define宏常量的区别
2015-09-23 00:39
239 查看
C++可以用const定义常量,也可以使用#define来定义常量,但是前者比后者有更多的优点:
1,const常量有数据类型,而宏常量没有数据类型,编译器可以对前者进行静态类型安全检查,而对后者只进行字符替换,没有类型安全检查,并且在字符替换时可能产生意想不到的错误(边际效应)
2,有些集成化的调试工具可以对const常量进行调试,但是不能对宏常量进行调试。
所以在C++中应尽量使用const来定义符号常量,包括字符串常量。
被const修饰的东西都受到c++/c语言实现的静态类型安全机制的强制保护,可以预防意外修改,提高程序的健壮性。
1,const常量有数据类型,而宏常量没有数据类型,编译器可以对前者进行静态类型安全检查,而对后者只进行字符替换,没有类型安全检查,并且在字符替换时可能产生意想不到的错误(边际效应)
2,有些集成化的调试工具可以对const常量进行调试,但是不能对宏常量进行调试。
所以在C++中应尽量使用const来定义符号常量,包括字符串常量。
被const修饰的东西都受到c++/c语言实现的静态类型安全机制的强制保护,可以预防意外修改,提高程序的健壮性。
相关文章推荐
- 关于规划的寓言故事:把一张纸折叠51次 ------意义不在折纸,而在规划,重在规划!!!
- MAC 如何在MAC系统中保存txt格式文本
- 进程监控程序的开发(程序运行监控)
- HDU_3667_Transportation(最小费用流)
- JavaScript----数字转换字符串&字符串转发数字
- (奶油小刀插件) android-butterknife-zelezny 插件使用
- Android 网络编程
- CentOS 6 使用 yum 安装MongoDB及服务器端配置
- spfa算法
- 自定义的一个分页类
- 【UIKit-124-3】#import <UIKit/UIView.h>
- Acdream 1667 调皮的数一 (ACdreamer java 专场)
- HDU1231最大连续子序列(动态规划)
- 对称加密和非对称加密
- codechef Tree and Queries Solved
- 软工个人项目
- VS2010 Qt5开发实用技能
- POJ 1010 STAMPS(DFS)
- 如何判断一个字符串中的括号是否匹配
- ios archives 出现的是other items而不是iOS Apps的解决方案