目的:保持处理宏的高效及安全性
解决的问题:1、c中预处理宏有些难以发现的问题
2、c++ 中预处理不能访问类成员,不能作用类的成员函数
作用:无函数调用时开销,又可像普通函数般进行参数、返回值类型安全检查、作为成员函数
注意:1、类的成员函数默认为内联函数
2、内联函数只是对编译器都建议,不一定会内联,有时未声明的函数也有可能内联,取决于编译器
内联函数的限制(可能不进行内联):1、不能存在过多的判断语句 2、不能存在任何形式的循环语句 3、函数体不能过大 4、不能对函数进行取地址操作
与宏函数的区别:1、发生在编译阶段宏函数发生在预处理阶段,都一样无调用函数开销
2、宏函数易出错,内联函数则不会
inline int myadd(int a, int b){ //普通函数前加上inline关键字使其成为内联函数 函数体和定义要结合在一起单写声明编译器开待为普通函数
return a+b;
}
宏函数的缺陷:
# include <"iostream">
using namespace stu;
#defind MYCMP(a,b) (a)<(b)?(a):(b)
inline int mycmp(int a,int b){
return a
}
int main(){
int a=1;
int b =5;
int c=mycmp(a++,b);
//int d=MYCMP(a++,b);
cout << c<< endl;
//cout < return 0; } 运行结果:2(运行宏函数的话结果为3)