inline函数由inline关键字定义,引入inline函数的主要原因是用它替代C中复杂易错不易维护的宏函数。

inline函数的注意事项有哪些?

在使用内联函数时,要注意以下几个事项和建议:
1、使用函数指针调用内联函数将会导致内联失败。

也就是说,如果使用函数指针来调用内联函数,那么就需要获取inline函数的地址。如果要取得一个inline函数的地址,编译器就必须为此函数产生一个函数实体,那么就内联失败。

2、如果函数体代码过长或者有多重循环语句,if或witch分支语句或递归时,不宜用内联。

3、类的constructors、destructors和虚函数往往不是inline函数的最佳选择。

类的构造函数(constructors)可能需要调用父类的构造函数,析构函数同样可能需要调用父类的析构函数,二者背后隐藏着大量的代码,不适合作为inline函数。虚函数(destructors)往往是运行时确定的,而inline是在编译时进行的,所以内联虚函数往往无效。如果直接用类的对象来使用虚函数,那么对有的编译器而言,也可起到优化作用。

4、至于内联函数是定义在头文件还是源文件的建议。

内联展开是在编译时进行的,只有链接的时候源文件之间才有关系。所以内联要想跨源文件必须把实现写在头文件里。如果一个inline函数会在多个源文件中被用到,那么必须把它定义在头文件中。

inline函数的注意事项有哪些?相关推荐

  1. Inline函数使用注意事项

    Inline函数使用注意事项 1.在一个文件中定义的inline函数不能再另一个文件中使用 2.inline函数应简洁,只有少数几个语句. 3.在inline函数中不能有循环,if,switch语句. ...

  2. C++ inline 函数简介

    1.inline 函数简介 inline 函数由 inline 关键字定义,引入 inline 函数的主要原因是用它替代 C 中复杂易错不易维护的宏函数. 2.编译器对 inline 函数的处理办法 ...

  3. C++基础:inline函数

    1.inline 函数 1.1定义:inline 函数由 inline 关键字定义,当函数功能简单,使用评率高,为了提高效率,直接将函数的代码嵌入到程序中.但缺点是:(1)相同代码重复书写:(2)程序 ...

  4. C++inline函数简介

    1.inline函数简介 inline函数是由inline关键字来定义,引入inline函数的主要原因是用它替代C中复杂易错不易维护的宏函数. inline(小心,不是online),翻译成" ...

  5. 内联函数(inline 函数)详解

    inline 函数详解 定义 内联函数和普通函数一样,区别仅仅是在被调用处直接使用机器码替换的形式. 直接采用机器码替换的目的是:减少因调用而造成的开销,加速执行效率. 很多编程语言包括:c,c++, ...

  6. 《C++初阶之路》inline函数

    一.本章重点 为什么要有inline函数(内联函数)? 什么是内联函数? 为啥所有函数不都改成内联? 内联函数的使用场景 内联函数注意事项 二.Inline函数 2.1为什么要有inline函数(内联 ...

  7. inline函数返回值_C++ 内联函数 inline的详细分析

    1. 什么是内联函数?   就是使用了关键字inline的函数,如 inline int max(int a, int b){ 2. 内联函数有什么作用?   C++在调用函数时,会执行一系列的操作: ...

  8. 关于inline函数

    (一)inline函数(摘自C++ Primer的第三版) 在函数声明或定义中函数返回类型前加上关键字inline即把min()指定为内联. inline int min(int first, int ...

  9. C++ inline函数和宏

    1. 内联函数 在C++中我们通常定义以下函数来求两个整数的最大值: int max(int a, int b) {return a > b ? a : b; } 为这么一个小的操作定义一个函数 ...

最新文章

  1. C++拾趣——C++11的语法糖auto
  2. 详解 | Dropout为何能防止过拟合?
  3. idea androidx控件不显示预览_如何解决SOLIDWORKS不显示缩略图预览的方法?
  4. Python基础-第二天
  5. python常用知识点_Python常用知识点
  6. 威纶通触摸屏维修_威纶通WEINVIEW触摸屏维修故障检测
  7. Linux编程手册读书笔记第四章(20140407)
  8. [转]win7-64位系统添加access的ODBC数据源 看不到其它数据源的问题
  9. 21天Jmeter打卡day7了解项目
  10. Duilib使用---颜色配置
  11. 《Python黑帽子:黑客与渗透测试编程之道》读书笔记(六):基于github的木马
  12. 电脑tdr太低是什么意思_SOLIDWORKS TDR 错误解决办法
  13. 通信管线及宽带接入工程建设中主要涉及的 设计、施工及验收规范
  14. OSNet 论文翻译
  15. Java发送附件到邮箱
  16. Excel学习笔记:P10-图表制作(下)
  17. 驱动开发:内核MDL读写进程内存
  18. GBase 8a 数据抽取工具orato8a用法介绍
  19. CSP 202012-5 星际旅行(60分)
  20. linux网络诊断工具mtr;speedtest网络测速脚本

热门文章

  1. [转载] Python集合set
  2. scala学习--难点
  3. TC SRM 665 DIV2 B LuckyCycle 暴力
  4. GridView 中 DataFormatString 的使用
  5. 如何使用 @ OutputCache 指令的 VaryByCustom 属性来缓存不同版本的页面(二)
  6. KinectV2+Ubuntu 14.04+Ros 配置
  7. java显示字母数字组合_Java字母加数字组合比较大小
  8. c语言三种循环语句,C语言三种循环语句的功能等价性
  9. python pathlib模块_【Python Snippets】Pathlib 模块
  10. python基础作业_017--python基础作业