inline函式 C 內聯函式 inline

2021-10-11 10:33:29 字數 658 閱讀 2156

inline要起作用,必須要與函式定義放在一起,而不是函式的宣告

inline

當編譯器處理呼叫內聯函式的語句時,不會將該語句編譯成函式呼叫的指令,而是直接將整個函式體的**插人呼叫語句處,就像整個函式體在呼叫處被重寫了一遍一樣,在執行時是順序執行,而不會進行跳轉

優點:內聯函式沒有執行函式呼叫的開銷,加快了程式執行時間;缺點:內聯函式是將整個函式體的**插入到呼叫語句處,會增大**的大小,增大記憶體的占用。

遞迴函式不能使用內聯函式

包含了遞迴、迴圈等結構的函式一般不會被內聯

類內定義的函式都是內聯函式,無論是否有inline修飾符(虛函式單獨考慮)

類外定義的沒有inline修飾的函式不是內聯函式

巨集是由預處理器對巨集進行替換的,而內聯函式是通過編譯器控制實現的。

巨集呼叫並不執行型別檢查甚至連正常引數也不檢查,但是函式呼叫卻要檢查。

c語言的巨集使用的是文字替換,可能導致無法預料的後果

在巨集中的編譯錯誤很難發現,因為它們引用的是擴充套件的**,而不是程式設計師鍵入的

虛函式可以是內聯函式,內聯是可以修飾虛函式的,但是當虛函式表現多型性的時候不能內聯(因為無法知道具體將哪一部分**插入到呼叫位置),具體內聯與否由編譯器決定。

C 內聯函式 inline

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

c 內聯函式inline

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

C 內聯inline函式

內聯inline函式 在c中保持效率的一種方法是使用巨集,他的行為類似於函式呼叫但卻沒有呼叫的開銷 like a function call without the normal function call overhead.巨集是由由預處理器preprocessor而非編譯器compiler處理的...