上面博客中我们主要区分了宏和函数的区别,了解了宏给我们带来方便的同时也有其自身的弊端。比如:下面这个例子:
#define N 1024
定义了一个常量,这时我们的程序运行时出错了,出错的地方刚好是我们定义的常量,这时编译器会抛出错误信息,提示1024有错,如果我们忘了1024表示什么?就会一直追踪1024去定位错误所在。
可是错误信息为什么是1024,而不是N呢?因为在预处理阶段,已经将N替换为1024了,所有N没有进入符号表。
解决方法:
const N = 1024;
这里,N是一个变量,就会记录在符号表中,报错时不再是数字,而是一个变量名。
通过上面的例子,可以看出,用const可以代替一个常量。
const代替宏
常量替换宏有两种情况:
1.定义一个常量指针
const char* con