inline函数的用处

简介:
比如 
int g(int x) 

return x + x; 



int f() 

return g(); 



这样f会调用g,然后g返回x + x给f,然后f继续把那个值返回给调用者。 


如果g是inline的话。f会被直接编译成。 


int f() 

return x + x; 



相当于把g执行的操作直接融合到f里。这样减少了调用g消耗的时间,但同时也增大了f的尺寸。 


这就是inline函数,也就是所谓的内联函数。 


--------- 


但是现在不是这样了。 


现在的编译器会自动决定是否对函数进行上面的操作,而不是根据你前面加不加inline。 


但是inline本身还是有另外一个意义: 


一个可执行文件的cpp文件中一个函数只能被定义一次。如果你把函数定义在一个.h文件中并让两个cpp包含就会造成这个函数分别在两个cpp中被定义产生错误。但是inline函数是允许在多个cpp中多次定义的,就解决了这个问题。
相关文章
|
11月前
|
NoSQL 安全 Linux
C++ | 对比inline内联函数和宏的不同点-1
C++ | 对比inline内联函数和宏的不同点
77 1
|
6月前
|
安全 编译器 C语言
一文讲清楚内联函数 inline
在C语言中,如果一些函数被频繁调用,不断地有函数入栈,即函数栈,会造成栈空间或栈内存的大量消耗。 为了解决这个问题,特别的引入了inline修饰符,表示为内联函数。
|
6月前
|
安全 编译器 数据库
C++特性——inline内联函数
C++特性——inline内联函数
|
11月前
|
编译器 Android开发 C语言
C++ | 对比inline内联函数和宏的不同点-2
C++ | 对比inline内联函数和宏的不同点
66 1
|
6月前
|
编译器 C++ 开发者
[C++从入门到精通] 2.inline内联函数、const的相关用法
[C++从入门到精通] 2.inline内联函数、const的相关用法
60 0
|
6月前
|
编译器 Linux C++
关于inline函数声明和定义为什么不可以分离
关于inline函数声明和定义为什么不可以分离
108 0
|
编译器 C++
【C++知识点】内联函数inline
【C++知识点】内联函数inline
73 0
ES6 折腾记 - let/const 块级变量及块作用域
ES5及之前是木有块级变量这个说法的,常规性是用闭包来防止变量泄露; 我来列出下ES5 var声明的一些特点 1. 函数内的变量若是带var声明,则会覆盖外部的全局变量优先使用;若是函数内部声明变量不带var,则直接覆盖同名的全局变量 2. 函数内存在变量提升的情况,可以先使用后声明 3. for循环中的var会污染全局【不局限于循环内】
178 0
一个怪异的C++函数定义方式
一个怪异的C++函数定义方式
106 0
重构——3内联临时变量(Inline Temp)
内联临时变量(Inline Temp):你有一个临时变量,只被一个简单表达式赋值一次,而它妨碍了其他重构手法。将所有对该变量的引用动作,替换为对它赋值的那个表达式自身
1594 0