首页 > 编程语言 >C++入门到放弃(05)——内联函数: inline

C++入门到放弃(05)——内联函数: inline

时间:2023-08-01 20:59:04浏览次数:44  
标签:函数 05 int max C++ 调用函数 内联 inline

1.基本用法

要使用内联函数时,必须遵循如下规则:

在函数声明前加上关键字inline,或着在函数定义前加上关键字inline,二者取其一即可。

inline int max(int a, int b);    // 取其一即可

inline int max(int a, int b){     // 取其一即可
    return a > b ? a : b;
}

另外一种做法是,直接省略原型,将函数实现写在函数声明的位置(即将函数头和函数代码,放在提供原型的地方),也可以实现inline的效果。

//int max(int a, int b);    //省略

int max(int a, int b){
    return a > b ? a : b;
}

两种方法,都可以实现内联函数inline。

2.作用

内联函数的基本作用是,以空间换时间,通过牺牲内存大小,换取更高的运行速率。

调用函数时,程序首先存储该指令的内存地址,然后将当前函数的参数复制到堆栈,之后再跳转至标记函数起点位置执行代码,结束后再跳转回原来的位置。这一系列操作,意味着每次调用函数都需要一定的资源开销。

内联函数提供另一种解决方案,有点类似于宏定义,通过直接将内涵函数的代码,直接嵌入被调用的位置,来避免调用函数而产生的额外开销。

 

3.注意事项

内联函数,无法实现递归调用。

宏再某种程度上,实现和内联函数相同的功能时,可以考虑改成内联函数。因为宏可能因为格式问题导致运行顺序出现异常,而内联函数不存在这种问题。

标签:函数,05,int,max,C++,调用函数,内联,inline
From: https://www.cnblogs.com/wyqmx/p/17599050.html

相关文章

  • 提供高达400MHz性能ADBF704WCCPZ411、ADBF705WCBCZ411嵌入式处理器(DSP)
    这些器件是ADSP-BF70xBlackfin数字信号处理器(DSP)产品系列中的一员。新款Blackfin+处理器内核将16位双MAC、32位MAC和16位复杂MAC结合为先进的信号处理引擎。它还将干净且正交的RISC式微处理器指令集的优势和单指令、多数据流(SIMD)多媒体能力结合为一个指令集架构。而且Blac......
  • C++ Primer 学习笔记——第九章
    第9章顺序容器前言本章是对第三章——字符串、向量和数组的扩展延伸,在第三章我们对标准库的顺序容器有一定了解,那么学习完本章我们对顺序容器的知识将会更加完整。标准库定义了几种关联容器,关联容器中元素的位置由元素相关联的关键字值决定。我们将在本章对关联容器做一定了解......
  • 【C++】PACS基础知识学习
    1、PACSPACS是PictureArchivingandCommunicationSystems首字母缩写,全称为影像储存和传输系统,涉及放射医学、计算机技术、通讯技术及数字图像技术等,是医院信息系统的重要组成部分,是将数字医疗设备(如X线、CT、MRI、超声、病理等)所产生的医疗图像进行获取、储存、管理、诊断及......
  • C++函数传递函数指针、仿函数、绑定器、可调用对象
    只定义voidtestFunc(intnum,conststd::function<int(int)>&functor)就可以,其他的相当于这个函数的特化版本#include<iostream>#include<functional>usingnamespacestd;intfunc1(intnum){cout<<"func1:"<<num<<en......
  • css的inline-block布局方式对齐问题 —— 转载自 article/2023/7/31 16:26:21
    css的inline-block布局方式对齐问题今天在实现百度前端技术学院的如下案例时遇到了div上下对齐问题。针对如下左右两栏布局,本来使用将两栏各自div的display设置为inline-block方式来实现,为了左边高度与右边对齐,直接量出右边div按照像素高度赋给左边。但是左边元素竟然出现在了......
  • 《dll篇》c#调用c++dll
    c#调用c++dll参考链接:https://jingyan.baidu.com/article/5d6edee2da72d699eadeecfe.html生成dll环境:VS2008新建项目->VisualC++->Win32项目MyDLL注意:C++编写的dll一般是不能直接拿来C#调用,需要先新建个C++的工程把dll里的方法重新封装成可被C#外部调用的函数。MyDLL.cp......
  • c++多线程同步
    死锁问题1单核实时可抢占的系统中,优先级不同的三个线程A/B/C,A>B>C当C先获得时间片开始执行,并获得锁A因为高优先级,被唤醒并中断C,但没有得到锁,而阻塞B获得执行机会,由于优先级高于C,B会一直执行,让AC系统无法取得任何进展std::stack<T>stack;std::mutexmutex;voidpush(c......
  • RichEdit RTF格式文本的存储和读取 VC++
    Rtf格式文本的读写,向控件发送EM_STREAMIN和EM_STREAMOUT消息,控件把格式文本显示或从把显示内容转化为格式文本。接口是用户定义的回调函数,格式文本由参数DWORD_PTRdwCookie传递。从控件读出RTF文本,参数用string比较好,因为消息处理是根据文本的长度,多次调用回调函数,传出数......
  • C++ Primer 第五版
    当我们使用istream对象作为条件时,其效果是检测流的状态.char:[-128,127].C++17新增byte数据类型,在<cstddef>头文件中定义,取值范围:[0,255].int和long都占用4字节空间.切勿混用带符号类型和无符号类型.\后跟3位以内8进制数字,或\x后跟一个或多个16进制数字都可以代表字符......
  • 【暑假例题】20230727 矩阵基本运算(C++)
    题目请使用C++实现矩阵的各种运算矩阵创建矩阵相加矩阵相减矩阵相乘数字乘矩阵矩阵上叠加矩阵左右叠加矩阵转置矩阵旋转矩阵求逆矩阵输出题目分析矩阵创建这里只需注意由于我们需要通过不同的函数对数组进行操作,所以我们需要将数组存储在容器或者使用指针防止数......