首页 > 其他分享 >Inline内联函数简单理解

Inline内联函数简单理解

时间:2024-03-11 17:44:24浏览次数:30  
标签:函数 int 代码 函数调用 inline Inline 内联

InLine_Function

  • How to Write it?
    example->
inline void func();
inline int sum(int v1 , int v2 );
inline void func(){

    std::cout<<"func()"<<std::endl;
}
inline int sum(int v1 ,int v2){

    return v1+v2;
}
  • 特点
    • 编译器会将函数调用直接展开为函数体代码
  • 人话:
    • 直接将函数体里面的计算方法直接放到函数调用里,类似于宏替换。和#include 很像,但不相同。
    • 编译后代码体量会变大。
  • 用途
    • 因为调用普通函数需要开辟栈空间,调用完成后要回收栈空间
    • 如果是内联函数(inline function)执行是不需要开辟栈空间,不存在函数调用,所以不会有开辟和回收栈空间的过程。执行起来效率较高,减少函数调用开销,但是会增大代码体积,增加内存占用
  • 什么时候使用
    • 1.调用频繁
    • 2.代码体积不大
  • inline是建议编译器编译成内联
    • 例如递归函数就不会编译成内联函数

内联函数与宏

#define add(v1,v2) v1+v2
int main(){
    int c = add(1,2);
    std::cout<<c<<std::endl;
    getchar();
    return 0;
}

<-宏替换

  • 区别:
    • 内联函数相比于宏替换,具有代码提示,拥有传参能力。宏是简单文本替换!!!
      以上内容都是孩子瞎写的,请大佬指正。

标签:函数,int,代码,函数调用,inline,Inline,内联
From: https://www.cnblogs.com/dxwxb/p/18066663

相关文章

  • 递归函数-树形列表
    基本思想根据根节点没有父节点原理找到父节点;根据子节点的父id找到根节点所有的子节点;递归遍历父节点的所有子节点; privatevoidrecursionFn(List<SysDept>list,SysDeptt){//得到子节点列表List<SysDept>childList=getChildList(list,t......
  • 慢慢学doris之【窗口函数】
    窗口函数也叫分析函数,可以用于自定义额外的查询字段,用于分析查询出来的数据。 举例说明,比如说现在有一个资讯浏览量的查询结果 其中sum_counts字段是根据日期分组然后累加的点击量,一般情况下,查询到这里也就差不多了。但是使用窗口函数还可以进一步分析得到的数据。比如,使用......
  • installEventFilter、eventFilter函数理解
    installEventFilter函数如下:voidQObject::installEventFilter(QObject*filterObj)Qt助手的解释如下:在对象上安装一个事件过滤器filterObj。如下:monitoredObj->installEventFilter(filterObj);其中monitoredObj、filterObj都是QObject的子类。上面代码意思是:在monitoredObj......
  • 给python入门者的帮助,关于函数和装饰器的理解。
    有时候学习不能过于较真,至少在合适的时机之前,还是闷头吞知识,等吃饱了,就有精力(足够的能量储备,足够的经验)来理解更深的理解,但是很多时候,包括我自己,都喜欢在吃饱之前就研究自己在吃什么,为什么这个东西能吃这种问题。最近发现几年前写的一篇关于python函数return的一些理解,又被查......
  • C语言基础-3、函数的参数和变量
    一、函数原型1、函数先后关系ex1:#include<stdio.h>//像这样把Max()函数写在上面,是因为:C的编译器自上而下顺序分析你的代码intMax(inta,intb){ intret; if(a>=b){ ret=a; } else { ret=b; } returnret;}intmain(){ intmax; max=Max(1,2);......
  • 函数回调(C++)
    函数回调C++部分​ 从C#逆向理解回去,这玩意应该就是delegate的原型了,只不过C#中将其作为一个单独的变量类型方便做管理,而C++这个老毕登这里则是以指针的形式表现出来。​ 作用在于,你不需要关心函数具体内容是什么,也不需要关心函数到底会处理什么,你只需要直接调用这个定义了的回......
  • wrf-chem-chem-kpp-kpp2.1-..-gen_kpp.c 文件函数顺序错误(kpp2.1版本),错误文件的路径是
    hereisamistakeinofficialfilegen_kpp.c,theirgen_kpp.c'sfunctiondefinitionorderisreserved!Sowhenyoumakethereisareportoferror:implicitfunction:write_list_to_screen,screen_out,check_all官方很多WRF版本的chem下面的/chem/KPP/util/wkc/gen_......
  • C语言基础-2、函数的定义与使用
    一、函数的定义和使用函数是一块代码,接受零个或多个参数,做一件事情,并返回零个或一个值函数定义:voidsum(intbegin,inend)//函数头;void:返回类型;sum:函数名,intbegin:参数表{ .......//函数体}1、调用函数函数名(参数值);ex1:#include<stdio.h>voidcheer(){ pr......
  • cache操作函数 --20240310
    Baremetal不讨论多级cache的情况下,裸驱两种关于dcache的操作:flush_dcache_all();//将cache里面的东西刷入内存invalidate_dcache_all();//将数据缓存中的所有内容无效化(invalidate)。该指令一般用于确保缓存中的数据与主内存中的数据同步flush_dcache_all()函数通常在嵌入......
  • printf函数与缓冲区 --20240310
    在linux下,printf输出到控制台经历了app->libc(stdio.h)->syscall->console驱动 下面是<<linux内核完全注释>>一书中的一段描述:继续看下write函数的实现:以下是write()函数的基本定义:#include<unistd.h>ssize_twrite(intfd,constvoid*buf,size_tcount);//ssize_t......