inline函数的注意事项有哪些?
inline函数由inline关键字定义,引入inline函数的主要原因是用它替代C中复杂易错不易维护的宏函数。
inline函数的注意事项有哪些?
在使用内联函数时,要注意以下几个事项和建议:
1、使用函数指针调用内联函数将会导致内联失败。
也就是说,如果使用函数指针来调用内联函数,那么就需要获取inline函数的地址。如果要取得一个inline函数的地址,编译器就必须为此函数产生一个函数实体,那么就内联失败。
2、如果函数体代码过长或者有多重循环语句,if或witch分支语句或递归时,不宜用内联。
3、类的constructors、destructors和虚函数往往不是inline函数的最佳选择。
类的构造函数(constructors)可能需要调用父类的构造函数,析构函数同样可能需要调用父类的析构函数,二者背后隐藏着大量的代码,不适合作为inline函数。虚函数(destructors)往往是运行时确定的,而inline是在编译时进行的,所以内联虚函数往往无效。如果直接用类的对象来使用虚函数,那么对有的编译器而言,也可起到优化作用。
4、至于内联函数是定义在头文件还是源文件的建议。
内联展开是在编译时进行的,只有链接的时候源文件之间才有关系。所以内联要想跨源文件必须把实现写在头文件里。如果一个inline函数会在多个源文件中被用到,那么必须把它定义在头文件中。
inline函数的注意事项有哪些?相关推荐
- Inline函数使用注意事项
Inline函数使用注意事项 1.在一个文件中定义的inline函数不能再另一个文件中使用 2.inline函数应简洁,只有少数几个语句. 3.在inline函数中不能有循环,if,switch语句. ...
- C++ inline 函数简介
1.inline 函数简介 inline 函数由 inline 关键字定义,引入 inline 函数的主要原因是用它替代 C 中复杂易错不易维护的宏函数. 2.编译器对 inline 函数的处理办法 ...
- C++基础:inline函数
1.inline 函数 1.1定义:inline 函数由 inline 关键字定义,当函数功能简单,使用评率高,为了提高效率,直接将函数的代码嵌入到程序中.但缺点是:(1)相同代码重复书写:(2)程序 ...
- C++inline函数简介
1.inline函数简介 inline函数是由inline关键字来定义,引入inline函数的主要原因是用它替代C中复杂易错不易维护的宏函数. inline(小心,不是online),翻译成" ...
- 内联函数(inline 函数)详解
inline 函数详解 定义 内联函数和普通函数一样,区别仅仅是在被调用处直接使用机器码替换的形式. 直接采用机器码替换的目的是:减少因调用而造成的开销,加速执行效率. 很多编程语言包括:c,c++, ...
- 《C++初阶之路》inline函数
一.本章重点 为什么要有inline函数(内联函数)? 什么是内联函数? 为啥所有函数不都改成内联? 内联函数的使用场景 内联函数注意事项 二.Inline函数 2.1为什么要有inline函数(内联 ...
- inline函数返回值_C++ 内联函数 inline的详细分析
1. 什么是内联函数? 就是使用了关键字inline的函数,如 inline int max(int a, int b){ 2. 内联函数有什么作用? C++在调用函数时,会执行一系列的操作: ...
- 关于inline函数
(一)inline函数(摘自C++ Primer的第三版) 在函数声明或定义中函数返回类型前加上关键字inline即把min()指定为内联. inline int min(int first, int ...
- C++ inline函数和宏
1. 内联函数 在C++中我们通常定义以下函数来求两个整数的最大值: int max(int a, int b) {return a > b ? a : b; } 为这么一个小的操作定义一个函数 ...
最新文章
- C++拾趣——C++11的语法糖auto
- 详解 | Dropout为何能防止过拟合?
- idea androidx控件不显示预览_如何解决SOLIDWORKS不显示缩略图预览的方法?
- Python基础-第二天
- python常用知识点_Python常用知识点
- 威纶通触摸屏维修_威纶通WEINVIEW触摸屏维修故障检测
- Linux编程手册读书笔记第四章(20140407)
- [转]win7-64位系统添加access的ODBC数据源 看不到其它数据源的问题
- 21天Jmeter打卡day7了解项目
- Duilib使用---颜色配置
- 《Python黑帽子:黑客与渗透测试编程之道》读书笔记(六):基于github的木马
- 电脑tdr太低是什么意思_SOLIDWORKS TDR 错误解决办法
- 通信管线及宽带接入工程建设中主要涉及的 设计、施工及验收规范
- OSNet 论文翻译
- Java发送附件到邮箱
- Excel学习笔记:P10-图表制作(下)
- 驱动开发:内核MDL读写进程内存
- GBase 8a 数据抽取工具orato8a用法介绍
- CSP 202012-5 星际旅行(60分)
- linux网络诊断工具mtr;speedtest网络测速脚本
热门文章
- [转载] Python集合set
- scala学习--难点
- TC SRM 665 DIV2 B LuckyCycle 暴力
- GridView 中 DataFormatString 的使用
- 如何使用 @ OutputCache 指令的 VaryByCustom 属性来缓存不同版本的页面(二)
- KinectV2+Ubuntu 14.04+Ros 配置
- java显示字母数字组合_Java字母加数字组合比较大小
- c语言三种循环语句,C语言三种循环语句的功能等价性
- python pathlib模块_【Python Snippets】Pathlib 模块
- python基础作业_017--python基础作业