typedef和define的区别
typedef定义了一个新的类型别名,而define(宏定义)只是简单的替换 typedef定义时有类型安全检查,而define是简单的替换,没有类型安全检查(所以容易出错) typedef在编译阶段处理,而define是预处理指令,在预编译阶段处理 typedef在它定义域内有效,而define一旦定义将不受定义域限制(即使在局部定义也在全局范围内有效) typedef定义后不能被取消,而define可以用定义后可以用undef取消
void f1()
{
#define N 15
const int n =12;
cout << N << endl;
}
void f2()
{
cout << N << endl; //正确,N已经定义过,不受定义域限制
#undef N
cout << N << endl; //错误,N的定义被取消
}
define和const的区别
define是预处理指令,在预编译阶段处理,而const在编译阶段处理 define是简单的替换,没有类型安全检查,而const常量有具体的类型,有类型安全检查 define定义后可以用#undef取消,const定义后不能被取消
define和inline的区别
define是关键字,是简单的替换,而inline是函数,inline(内联)函数对编译器提出建议,是否进行替换,编译器有权拒绝 define是预处理指令,在预编译阶段处理,而inline在编译阶段处理 define没有类型安全检查,而inline有类型安全检查