91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++中的內聯函數是什么

發布時間:2022-03-17 09:10:05 來源:億速云 閱讀:168 作者:小新 欄目:開發技術

這篇文章主要介紹C++中的內聯函數是什么,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

1.概念

以inline修飾的函數叫做內聯函數,編譯時C++編譯器會在調用內聯函數的地方展開,沒有函數壓棧的開銷,內聯函數提升程序運行的效率。

2.函數演示

我們先來看一下普通的函數:

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

在匯編代碼我們可以看出函數調用和壓棧:

C++中的內聯函數是什么

我們在加inline 試試看:

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

反匯編:

C++中的內聯函數是什么

發現還是一樣,為什么呢?

在debug版本下編譯器不會將內聯函數展開,因為展開就調試不了.

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

首先我們打開屬性面板:

C++中的內聯函數是什么

C++中的內聯函數是什么

C++中的內聯函數是什么

接下來進行調試:

C++中的內聯函數是什么

 沒有函數的調用!!

反匯編:

C++中的內聯函數是什么

3.函數特性

1.inline是一種以空間換時間的做法,省去調用函數額開銷。所以代碼很長或者有循環/遞歸的函數不適宜使用作為內聯函數。

2.inline對于編譯器而言只是一個建議,編譯器會自動優化,如果定義為inline的函數體內有循環/遞歸等等,編譯器優化時會忽略掉內聯。

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

4.可以代替宏定義函數.

以上是“C++中的內聯函數是什么”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

卢氏县| 温州市| 闵行区| 吉木萨尔县| 合山市| 滕州市| 赞皇县| 防城港市| 凌海市| 潞西市| 郯城县| 油尖旺区| 义乌市| 潮州市| 休宁县| 嘉义市| 桃江县| 喀喇沁旗| 惠来县| 罗甸县| 崇义县| 台州市| 道孚县| 益阳市| 永丰县| 前郭尔| 漯河市| 新宾| 招远市| 抚松县| 池州市| 德庆县| 河池市| 岳阳县| 长岛县| 广州市| 承德市| 武威市| 义乌市| 新竹县| 二连浩特市|