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

C++之内联函数-inline

2016-06-22 11:05 435 查看
一、宏函数

#define SQR(x) ((x)*(x))


优点:不需要调用,直接内嵌到代码段

缺点:直接内嵌造成了代码体积增大,且容易产生歧义, 没有类型检查

二、普通函数

int sqr(int x){
return x * x;
}


优点:不会产生歧义,有类型检查,不会增加代码体积

缺点:需要函数调用,增加了压栈弹栈的开销

三、内联函数

inline int pow(int x){
return x * x;
}

int main(){
int b = 5;
int a = pow(b);    //这里编译时就会变成 int a = b * b;
}


优点:不会产生歧义,不需要调用,避免了压栈弹栈的开销,有类型检查

缺点:同宏函数一样,由于内嵌,造成代码体积的增大

注意:inline 只是给编译器的一种建议,编译器会根据函数本身适不适合作为inline函数进行优化,一般内联函数不超过10行代码,更不准存在递归。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: