宏定义由预编译器来处理,当你定义一个记号#define RATIO
1.652时,RATIO可能从未被编译器看到,而直接被预处理其移走了,如果你的定义是#define RATIO
,在预处理进行一个宏替换的时候,由于你调用地方的特殊性,你会获得一个莫名奇妙的错误,但是如果你使用的const double RATIO =
1.652,当你没有初始化这个变量,则在这个变量出错地方编译器将给出错误信息,可以方便程序设计者很快的找出错误所在。这就是在effective
C++中作者所说的尽量以const enum inline 替换define 条款。