1.考虑为什么? 首先,#define不是语言的一部分,而是预编译过程.也就是在编译器编译之前,进行文本替换.考虑#define Pi 3.1425:在编译之前,Pi都会被文本替换为3.1415,因此编译器看不到Pi这个标识.这会增加调试难度.同时文本替换导致目标码中出现多份3.1415. 2.尽量不使用#define,就要使用替代办法. 3.对于#define Pi 3.1415这样形式,使用const替换const double Pi = 3011415;以const替换#define,有两…
const作用: 1.定义常量,可以保护被修饰的东西,防止意外的修改,增强程序的健壮性. const int Max = 100; void f(const int i) { i=10;//error! } //如果在函数体内修改了i,编译器就会报错 ; int b = a; //it's right a = ; // it's wrong, 2.便于进行类型检查 const常量有数据类型,而宏常量没有数据类型.编译器可以对前者进行类型安全检查,而对后者只进行字符替换,没有类型安全检查…