C++ 內嵌函式

來源:互聯網
上載者:User

標籤:

內嵌函式從源碼層看,有函數的結構,而在編譯後,卻不具備函數的性質。
內嵌函式不是在調用時發生控制轉移,而是在編譯時間將函數體嵌入在每一個調用處。
編譯時間,類似宏替換,使用函數體替換調用處的函數名。
一般在代碼中用inline修飾,但是能否形成內嵌函式,需要看編譯器對該函數定義的具體處理。


應注意如下幾點: 
1、內嵌函式可減少cpu的系統開銷,並且程式的整體速度將加快,但當內嵌函式很大時,會有相反的作用,

    因此一般比較小的函數才使用內嵌函式。


2、有兩種內嵌函式的聲明方法,一種是在函數前使用inline關見字,另一種是在類的內部定義函數的代碼,

     這樣的函數將自動轉換為內嵌函式,而且沒必要將inline放在函數前面。


3、內聯是一種對編譯器的請求,下面這些情況會阻止編譯器服從這項請求:函數中包含有迴圈,switch或

    goto語句,遞迴函式,含有static的函數。

內嵌函式的定義:
inline 應當是用於函式宣告(Declaration)而非函數實現(Implementation)。但由於不同的編譯器下inline

關鍵字所修飾函數的調用範圍不一致,因此,一種簡單的作法是,將inline函數的聲明和實現合一。如果確定函

數僅應用於同一檔案,我們可以將函數的聲明和實現都放在.c/.cpp中;否則將其放入.h中(這樣,包含了此頭

檔案的任何檔案都可以使用它)。

C++ 內嵌函式

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.