內聯函式 C語言的inline內聯函式的作用

2021-08-29 18:31:26 字數 1170 閱讀 3616

編譯器完成的,在呼叫處將函式展開,減少了呼叫函式時

進棧和出棧

,壞處是會增加**段的大小(

缺點:增加了編譯後的二進位制檔案的大小)

,為了提高執行的速度,對於一些程式**小,執行時間短但利用次數比較多的函式我們就定義為inline,對於短小的函式,可以省去call儲存現場等操作,提高程式執行速度。

原文:

分類: c基礎

2011-08-27 03:19 

1159人閱讀

收藏舉報

[cpp]view plain

copy

關內聯函式鍵字

inline

[cpp]view plain

copy

void

myprintf(

inta)  

intmain()    

對於這個函式,在進行反覆的列印3的過程中我們是不是要反覆的呼叫myprintf(int a)這個函式,進函式和出函式是需要時間的,假設這個過程用時為4ms,而執行printf這個操作只需要2ms,那麼在100次迴圈的過程中進出函式的時間比函式功能printf需要的時間還要長,這樣很影響工作效率。於是,我們就想要如何去免去進出函式的過程呢?那麼就可以宣告inline這個關鍵字,有何用途?當我們宣告了乙個inline的函式時候,函式被呼叫的語句就被替換成了函式本身,進行了乙個預處理

[cpp]view plain

copy

intmain()  

return

0;  

}  

這樣一來我就非常明顯的知道這個函式是幹什麼的了,就不需要去呼叫函式的定義部分,再通俗點講,原來我要從家裡去外面的商店去買冰淇淋(來回需要時間),現在商店就在我家裡面了,那麼我是不是省去了去商店的時間呢?但是相應的我這個家要很大(也就是所謂的空間要很大才能包含這個商店對吧?)這樣就是用空間去換取了時間了。

內聯函式在編譯層面類似於巨集替換。也就是說,程式執行過程中呼叫內聯函式不需要入棧出棧,所以效率會提高。

[cpp]view plain

copy

#include

inline

intadd(

intx, 

inty)  

intmain()    

C語言內聯函式inline

一 什麼是內聯函式 在c語言中,如果一些函式被頻繁呼叫,不斷地有函式入棧,即函式棧,會造成棧空間或棧記憶體的大量消耗。為了解決這個問題,特別的引入了inline修飾符,表示為內聯函式。棧空間就是指放置程式的區域性資料也就是函式內資料的記憶體空間,在系統下,棧空間是有限的,假如頻繁大量的使用就會造成因...

inline函式 C 內聯函式 inline

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

C 內聯函式 inline

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