本文主要和大家一起來學習一下c++中的內聯函式,旨在能夠更深層次的了解和掌握c++相關用法,力爭做到知其然還要知其所以然。
關於內聯函式,本文主要從以下幾個方面進行了整理和歸納。
一、相關描述
1、內聯函式主要目的是為了提高函式的執行效率,用關鍵字inline放在函式定義的前面即可,將函式指定為內聯函式。
2、內聯函式通常就是將它在程式中的每個呼叫點上「內聯地」展開,例如定義比較兩個數大小的函式。
inline int
max(int a,int b)
呼叫coutc++ inline函式是一種用於實現的關鍵字,一般地使用者可以看到函式的宣告,但看不到函式的定義。
1、如下風格的函式func則是內聯函式:
inline void func(int x,int y)
//inline與函式定義放在一起
2、定義在類宣告之中的成員函式將自動地成為內聯函式:
classa
};
編譯器是否將它真正內聯則要看func函式如何定義,光看函式宣告是不夠的。
三、內聯函式的使用方法
1、內聯函式應該在標頭檔案中定義,這一點不同於其他函式。編譯器在呼叫點內聯展開函式的**時,必須能夠找到inline函式的定義才能將呼叫函式替換為函式**,而對於在標頭檔案中僅有函式宣告是不夠的。
2、內聯函式的定義也可以放在原始檔中,但此時只有定義的那個原始檔可以用它,而且必須為每個原始檔拷貝乙份定義(即每個原始檔裡的定義必須是完全相同的)。即使是放在標頭檔案中,編譯器也是對每個定義做乙份拷貝。
3、相對於放在原始檔中,放在標頭檔案中既能夠確保呼叫函式定義是相同的,又能夠保證在呼叫點能夠找到函式定義從而完成內聯(替換)。
4、在標頭檔案中加入或修改inline函式時,使用了該標頭檔案的所有原始檔都必須重新編譯。
四、什麼時候用內聯函式?
內聯函式僅僅省去了函式呼叫的開銷,從而提高了程式的執行效率。上面說到的呼叫開銷,並不包括執行函式體所需要的開銷。
1、當函式體積比較小的時候,內聯函式可以令目標**更加高效,對於訪問函式以及其他函式體比較短,效能關鍵的函式,鼓勵使用內聯;
2、如果執行函式體內**的時間比函式呼叫的開銷大得多,那麼inline的效率收益會很小,另一方面,每一處內聯函式的呼叫都要拷貝**將會使程式的總**量增大,消耗更多的記憶體空間。
C 中的內聯函式
華清遠見嵌入式學院 講師。c 中存在一些具有特殊意義或功能的特殊函式,我們來簡單介紹一下內聯函式。從軟體工程的角度來看,我們通常將乙個程式通過一組函式來進行實現,但是函式的呼叫涉及到執行時間的開銷,如果有的函式需要頻繁使用,則累計占用的時間會很長,所以c 提供了內聯函式的機制來提高效率,也就是在編譯...
C 中的內聯函式
c 中的內聯函式 華清遠見嵌入式學院講師。c 中存在一些具有特殊意義或功能的特殊函式,我們來簡單介紹一下內聯函式。從軟體工程的角度來看,我們通常將乙個程式通過一組函式來進行實現,但是函式的呼叫涉及到執行時間的開銷,如果有的函式需要頻繁使用,則累計占用的時間會很長,所以c 提供了內聯函式的機制來提高效...
C 中的內聯函式
c 中存在一些具有特殊意義或功能的特殊函式,我們來簡單介紹一下內聯函式。從軟體工程的角度來看,我們通常將乙個程式通過一組函式來進行實現,但是函式的呼叫涉及到執行時間的開銷,如果有的函式需要頻繁使用,則累計占用的時間會很長,所以c 提供了內聯函式的機制來提高效率,也就是在編譯時將所呼叫的函式的 嵌入到...