c++对c的拓展_内联函数

目的:保持处理宏的高效及安全性

解决的问题: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)

你可能感兴趣的:(c++对c的拓展_内联函数)