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

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

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

1.概念

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

2.函數演示

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

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

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

我們在加inline 試試看:

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

反匯編:

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

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

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

首先我們打開屬性面板:

接下來進行調試:

 沒有函數的調用!!

反匯編:

3.函數特性

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

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

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

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

總結

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

相關文章

  • OpenCV實現高斯噪聲

    OpenCV實現高斯噪聲

    這篇文章主要為大家詳細介紹了OpenCV實現高斯噪聲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • C/C++函數調用棧的實現方法

    C/C++函數調用棧的實現方法

    這篇文章主要介紹了C/C++函數調用棧的實現方法,可實現一個簡單的腳本解釋器,具有一定的參考借鑒價值,需要的朋友可以參考下
    2014-10-10
  • C語言循環(huán)隊列的表示與實現實例詳解

    C語言循環(huán)隊列的表示與實現實例詳解

    這篇文章主要介紹了C語言循環(huán)隊列的表示與實現,對于數據結構與算法的研究很有幫助,需要的朋友可以參考下
    2014-07-07
  • C++17中std::string_view的使用

    C++17中std::string_view的使用

    std::string_view是C++17標準庫中的一種新類型,它提供了對一個字符序列的非擁有式視圖,本文主要介紹了C++17中std::string_view的使用,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • Qt基礎開發(fā)之QString與QByteArray詳細用法與區(qū)別及QString QByteArray互轉

    Qt基礎開發(fā)之QString與QByteArray詳細用法與區(qū)別及QString QByteArray互轉

    這篇文章主要介紹了Qt基礎開發(fā)之QString與QByteArray詳細用法與區(qū)別及QString QByteArray互轉,需要的朋友可以參考下
    2020-03-03
  • C語言的數據結構之樹、森連、二叉樹之間的轉換圖解

    C語言的數據結構之樹、森連、二叉樹之間的轉換圖解

    這篇文章主要介紹了C語言的數據結構之樹、森連、二叉樹之間的轉換詳解,數據是信息的載體,是描述客觀事物屬性的數、字符以及所有能輸入到計算機中并被程序識別和處理的符號的集合,需要的朋友可以參考下
    2023-07-07
  • VS報錯C6011的問題:取消對NULL指針的引用(解決方法)

    VS報錯C6011的問題:取消對NULL指針的引用(解決方法)

    這篇文章主要介紹了VS報錯C6011的問題:取消對NULL指針的引用(解決方法),C6011:取消對NULL指針的引用,發(fā)現是沒有進行空指針的判斷,解決方案跟隨小編一起看看吧
    2024-01-01
  • C++中共用體的定義與應用總結

    C++中共用體的定義與應用總結

    共同體的定義類似結構體,不過共同體的所有成員都在同一段內存中存放,起始地址一樣,并且同一時刻只能使用其中的一個成員變量
    2013-10-10
  • c語言 兩字符串交叉合并實例

    c語言 兩字符串交叉合并實例

    今天小編就為大家分享一篇c語言 兩字符串交叉合并實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • C++ 轉換函數用法案例詳解

    C++ 轉換函數用法案例詳解

    這篇文章主要介紹了C++ 轉換函數用法案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-09-09

最新評論