define、const、typedef、inline 使用方法

define、const、typedef、inline 使用方法

1. const 和 #define 的区别

#define  Max  100

const int Max = 100;
  • #define 宏在预处理阶段起作用,简单的文本替换 ,没有类型检查。 而const 有数据类型,需要进行判断,可以避免一些低级错误,在编译、链接中起作用;

  • #define 预处理后,占用代码段空间,const 占用数据段空间;

  • #define 可以通过 #undef 取消某个符号的定义,经行重定义,const 不能重定义 ;

  • #define 的独特功能,可以用来防止文件重复引用;

总结:C++ 中多使用const 修饰常量

2.#define 和 别名typedef 的区别

  • typedef 在编译阶段有效,有类型检查的功能, #define 是宏定义,发生在预处理阶段,不进行类型检查;
  • 功能差异,typedef 用来定义类型的别名 ,与struct的结合使用
typedef struct PERSON{
  char name[64];
  int age;
}Person;   //Person 为该结构体别名
  • 作⽤域不同,#define 没有作⽤域的限制,只要是之前预定义过的宏,在以后的程序中都可以使⽤。
    ⽽ typedef 有⾃⼰的作⽤域。

3.#define 和 inline 的区别

#define 宏是关键字 inline 是内联函数,有类型检查,相比宏更加安全;

//宏函数为文本替换  ,参数需要添加小括号 ,避免额外错误
#define  MAX(left,right)  ((left)>(right))?(left):(right)   


//内联函数在编译阶段就会在调用内联函数的地方自动展开
//内联函数是一种以空间换时间的做法,但是在代码较长时,或者有递归时不适合使用
inline int MAX(int& a,int &b)
{
  return a>b?a:b;
}

总结:内联函数是宏的升级

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值