欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++的內(nèi)聯(lián)函數(shù)你了解嗎

 更新時間:2022年03月16日 16:28:06   作者:表哥抱表弟  
這篇文章主要為大家詳細介紹了C++的內(nèi)聯(lián)函數(shù),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

1.概念

以inline修飾的函數(shù)叫做內(nèi)聯(lián)函數(shù),編譯時C++編譯器會在調(diào)用內(nèi)聯(lián)函數(shù)的地方展開,沒有函數(shù)壓棧的開銷,內(nèi)聯(lián)函數(shù)提升程序運行的效率。

2.函數(shù)演示

我們先來看一下普通的函數(shù):

#include <iostream>
using namespace std;
 int Add(int left, int right) {
	return left + right;
}
int main() {
	Add(1, 2);
	return 0;
}

在匯編代碼我們可以看出函數(shù)調(diào)用和壓棧:

我們在加inline 試試看:

#include <iostream>
using namespace std;
inline int Add(int left, int right) {
	return left + right;
}
int main() {
	Add(1, 2);
	return 0;
}

反匯編:

發(fā)現(xiàn)還是一樣,為什么呢?

在debug版本下編譯器不會將內(nèi)聯(lián)函數(shù)展開,因為展開就調(diào)試不了.

我們需要設置一下屬性:(vs2019)

首先我們打開屬性面板:

接下來進行調(diào)試:

 沒有函數(shù)的調(diào)用!!

反匯編:

3.函數(shù)特性

1.inline是一種以空間換時間的做法,省去調(diào)用函數(shù)額開銷。所以代碼很長或者有循環(huán)/遞歸的函數(shù)不適宜使用作為內(nèi)聯(lián)函數(shù)。

2.inline對于編譯器而言只是一個建議,編譯器會自動優(yōu)化,如果定義為inline的函數(shù)體內(nèi)有循環(huán)/遞歸等等,編譯器優(yōu)化時會忽略掉內(nèi)聯(lián)。

3. inline不建議聲明和定義分離,分離會導致鏈接錯誤。因為inline被展開,就沒有函數(shù)地址了,鏈接就會找不到。

4.可以代替宏定義函數(shù).

總結

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注腳本之家的更多內(nèi)容! 

相關文章

最新評論