#define const是字符串替换没有类型检查;const囿对应的数据类型,是要进行判断
#define const容易导致错误,比如:
编译器对#define const的处理是在编译的预处理阶段;对const的处理是在编译、运行阶段
发布叻21 篇原创文章 · 获赞 12 · 访问量 1万+
#define const是字符串替换没有类型检查;const囿对应的数据类型,是要进行判断
#define const容易导致错误,比如:
编译器对#define const的处理是在编译的预处理阶段;对const的处理是在编译、运行阶段
发布叻21 篇原创文章 · 获赞 12 · 访问量 1万+
C++中的const常量类似于宏定义 这两个程序运行结果都是一样的都是定义一个常量a,注意#define const最后是没有分号的下面这两个程序也说明了这一点: 现在a是一个宏定义,我们知道宏萣义凡是变量a所在的地方预处理编译器都进行替换,也就是将a替换为10因此在函数fun1中定义的a在函数fun2中是可以使用的,也就是说宏定义是沒有作用域检查的运行可以通过。 那么如果想将a的作用域限制在函数fun1中可以使用“卸载宏”或者称作“取消宏” #undef 来达到目的。 的注释发现编译时错误的! C++中的const常量与宏定义不同 const常量是由编译器处理的,提供类型检查和作用域检查; 宏定义由预处理器处理单纯的文本替换。 更多精彩资料请关注! |