【C++】内联函数是什么?内联和宏有什么区别?

举报
王博Kings 发表于 2020/12/29 23:16:48 2020/12/29
【摘要】 目录 什么是内联函数? 什么时候使用内联函数? 内联函数和常规函数的区别 如何使用内联函数? 注意: 代码示例 运行结果: 内联与宏有什么区别  什么是内联函数? 内联函数是C++为了提高程序运算速度所做的一项改进。 内联函数 的编译代码与其他程序的代码“内联”起来,也就是不用乱跳来跳去,编译器将使用的相应的函数代码替换函数调用。 什么时候使用内联函...

目录

什么是内联函数?

什么时候使用内联函数?

内联函数和常规函数的区别

如何使用内联函数?

注意:

代码示例

运行结果:

内联与宏有什么区别


 什么是内联函数?

内联函数是C++为了提高程序运算速度所做的一项改进。

内联函数 的编译代码与其他程序的代码“内联”起来,也就是不用乱跳来跳去,编译器将使用的相应的函数代码替换函数调用。

什么时候使用内联函数?

内联函数的  运行速度比常规函数稍快,但是代价是需要更多内存。

内联函数和常规函数的区别

如何使用内联函数?

  • 在函数声明前加上关键字inline
  • 在函数定义前加上关键字inline

 通常是省略原型,将整个定义(函数头、函数代码)放在本应提供原型的地方

注意:

将函数作为内联函数时,可能编译器不一定满足。

内联函数不能递归,所以不能自己调用自己,所以不能作为内联函数

有的编译器没有这种特性

代码示例


  
  1. // inline.cpp -- using an inline function
  2. #include <iostream>
  3. // an inline function definition
  4. inline double square(double x) { return x*x; }
  5. int main()
  6. {
  7. using namespace std;
  8. double a, b;
  9. double c = 13.0;
  10. a = square(5.0);
  11. b = square(4.5 + 7.5);
  12. cout << "a = " << a << ", b = " << b << endl;
  13. cout << "c = " << c;
  14. cout << ", c squared = " << square(c++) << "\n";
  15. cout << "Now c = " << c << endl;
  16. return 0;
  17. }

运行结果:

请注意b的结果,假如是宏,那么就不可能计算正确

内联与宏有什么区别

宏是通过文本替换

比如:   #define SQUARE(X)  X*X

运行: b=SQUARE(4.5 + 7.5)  最后结果是 b = 4.5 + 7.5 * 4.5 +7.5 ;

文章来源: kings.blog.csdn.net,作者:人工智能博士,版权归原作者所有,如需转载,请联系作者。

原文链接:kings.blog.csdn.net/article/details/90382544

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。