c 內聯函式inline

2021-10-10 03:35:05 字數 1099 閱讀 2013

**中函式呼叫包含著一系列工作:呼叫前要儲存暫存器,並在返回時恢復。同時可能需要拷貝引數,程式還要轉向乙個新的位置繼續執行。而通過inline關鍵字可以將函式指定為內聯函式,也就是將內聯函式**放到呼叫點處執行。

內聯函式一般用於**規模較小、流程直接、頻繁呼叫的函式。當我們 使用inline只是建議編譯器「內聯的」展開 ,而**不符合**塊短小並且頻繁呼叫的情況時,編譯器會把它當作普通函式。

inline

const

int&

minval

(const

int&a,

const

int&b)

int c =

minval

(a, b)

;//展開為

int c = a < b ? a : b;

類定義的內聯函式分為以下3種:隱式內聯、顯式內聯、追加內聯

class

person

//1.隱式內聯, 定義在類裡面

void

printname1()

//2.顯式內聯,成員函式前加inline

在類裡面顯式宣告、定義

inline

void

printname2()

在類裡面顯式宣告

inline

void

printname3()

;//3. 追加內聯 在類裡面沒有顯式宣告,在類外加inline

void

printname4()

;//非內聯函式, 在類裡面沒有顯式宣告,類外也沒有

void

printname5()

;private

: string name;};

void person::

printname3()

inline

void person::

printname4()

//成員被函式前加了inline是顯式內聯函式

void person::

printname5()

//不是內聯函式

inline函式 C 內聯函式 inline

inline要起作用,必須要與函式定義放在一起,而不是函式的宣告 inline 當編譯器處理呼叫內聯函式的語句時,不會將該語句編譯成函式呼叫的指令,而是直接將整個函式體的 插人呼叫語句處,就像整個函式體在呼叫處被重寫了一遍一樣,在執行時是順序執行,而不會進行跳轉。優點 內聯函式沒有執行函式呼叫的開銷...

C 內聯函式 inline

巨集 就是使用乙個字串來代替乙個表示式 或函式呼叫 編譯之前,預處理器會使用這個巨集字串所代表的表示式 或函式呼叫 來替換所有出現的巨集字串,這樣的話,用巨集表示的函式呼叫 就不用另外開闢函式棧,不用保護和恢復函式呼叫現場,這樣就提高了 的執行效率 所以,呼叫乙個巨集比呼叫乙個函式更有效 但是呼叫巨...

c 內聯函式inline

1.inline原理 在程式編譯時,編譯器將程式中出現的內聯函式的呼叫表示式用內聯函式的函式體來進行替代。採用空間換時間的策略。是以 膨脹 複製 為代價,僅僅省去了函式呼叫的開銷,從而提高函式的執行效率。例如 如果乙個函式被指定為inline函式,則它將在程式中每個呼叫點上被展開。int i 10 ...