标题: [C++]笔记二十:const 和 #define 的对比 [打印本页]

作者: tyyhmtyyhm    时间: 2018-3-8 22:53
标题: [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
更多精彩资料,请关注!






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1