您的位置:首页 > 编程语言 > C语言/C++

C语言中define与inline的一些小区别和用法

2017-11-23 18:44 831 查看
1.define:定义预编译时处理的宏;
  只进行简单的字符替换,无类型检测

2.inline: 内联函数对编译器提出建议,是否进行宏替换,编译器有权拒绝既为提出申请,不一定会成功

      inline

1) 产生背景

inline这个关键字的引入原因和const十分相似,inline 关键字用来定义一个类的内联函数,引入它的主要原因是用它替代C中

表达式形式的宏定义。

表达式形式的宏定义一例:

   #define ExpressionName(Var1,Var2) (Var1+Var2)*(Var1-Var2)

       这种表达式形式宏形式与作用跟函数类似,但它使用预编译器,没有堆栈,使用上比函数高效。但它只是预编译器上符号表的简单替换,不能进行参数有效性检测及使用C++类的成员访问控制。
inline 推出的目的,也正是为了取代这种表达式形式的宏定义,它消除了它的缺点,同时又很好地继承了它的优点。inline代码放入预编译器符号表中,高效;它是个真正的函数,调用时有严格的参数检测;它也可作为类的成员函数。

2) 具体作用

直接在class类定义中定义各函数成员,系统将他们作为内联函数处理;成员函数是内联函数,意味着:每个对象都有该函数一份独立的拷贝。

在类外,如果使用关键字inline定义函数成员,则系统也会作为内联函数处理;

#define 宏名要替换的代码    

宏定义,保存在预编译器的符号表中,执行高效;作为一种简单的符号替换,不进行其中参数有效性的检测

typedef 已有类型 新类型

别名, 常用于创建平台无关类型, typedef 在编译时被解释,因此让编译器来应付超越预处理器能力的文本替换。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: