define与typedef、const、inline的区别

typedef和define的区别

  1. typedef定义了一个新的类型别名,而define(宏定义)只是简单的替换
  2. typedef定义时有类型安全检查,而define是简单的替换,没有类型安全检查(所以容易出错)
  3. typedef在编译阶段处理,而define是预处理指令,在预编译阶段处理
  4. typedef在它定义域内有效,而define一旦定义将不受定义域限制(即使在局部定义也在全局范围内有效)
  5. 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的区别

  1. define是预处理指令,在预编译阶段处理,而const在编译阶段处理
  2. define是简单的替换,没有类型安全检查,而const常量有具体的类型,有类型安全检查
  3. define定义后可以用#undef取消,const定义后不能被取消

define和inline的区别

  1. define是关键字,是简单的替换,而inline是函数,inline(内联)函数对编译器提出建议,是否进行替换,编译器有权拒绝
  2. define是预处理指令,在预编译阶段处理,而inline在编译阶段处理
  3. define没有类型安全检查,而inline有类型安全检查
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值