找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2044|回复: 0
打印 上一主题 下一主题
收起左侧

[C++]笔记二十:const 和 #define 的对比

[复制链接]
跳转到指定楼层
楼主
const 和 #define 对比
第一const与#define的相同点
C++中的const常量类似于宏定义
const  int  c = 5  ≈  #define  c  5
const是用来替换#define的一手段。
这两个程序运行结果都是一样的,都是定义一个常量a,注意#define最后是没有分号的。下面这两个程序也说明了这一点:
第二const与#define的不同点
看程序
现在a是一个宏定义,我们知道宏定义凡是变量a所在的地方预处理编译器都进行替换,也就是将a替换为10。因此在函数fun1中定义的a在函数fun2是可以使用的也就是说宏定义是没有作用域检查的。运行可以通过。
那么如果想将a的作用域限制在函数fun1中可以使用“卸载宏”或者称作“取消”  #undef  来达到目的
#undef  a  —— 此处往下取消a的宏定义
#undef     —— 此处往下取消所有宏定义。
看看const作用域检查,我们在fun1定义变量b作用域就局限在fun1函数中了,在fun2函数中是不可用的可以取消  //printf("b=%d\n",b); 的注释,发现编译时错误的!
结论
C++中的const常量与宏定义不同
const常量是由编译器处理的提供类型检查和作用域检查;
宏定义由预处理器处理,单纯的文本替换。
【C++】笔记系列均为原创,转载请注明转自微号:Lightspeed-Tech  或  AutoCode
更多精彩资料,请关注!

评分

参与人数 1黑币 +12 收起 理由
YJGG + 12 赞一个!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表