mplab內聯函數 什么是內聯函數?
什么是內聯函數?內聯函數具有通用函數的特點,只有在函數調用的處理上不同于通用函數。調用一般函數時,程序的執(zhí)行權應轉移到被調用函數,然后返回到調用它的函數;調用內聯函數時,調用表達式由內聯函數的主體替換
什么是內聯函數?
內聯函數具有通用函數的特點,只有在函數調用的處理上不同于通用函數。調用一般函數時,程序的執(zhí)行權應轉移到被調用函數,然后返回到調用它的函數;調用內聯函數時,調用表達式由內聯函數的主體替換。在使用內聯函數時,我們應該注意以下幾點:
1。內聯函數中不允許使用循環(huán)語句和開關語句。
如果內聯函數有這些語句,編譯器會將函數視為普通函數來生成函數調用代碼。遞歸函數(調用它們自己的函數)不能用作內聯函數。內聯函數只適用于只有1-5行的小函數。對于包含許多語句的大型函數,函數調用和返回的代價相對較小,因此不必使用內聯函數。
2. 內聯函數的定義必須在第一次調用內聯函數之前出現。
3. 在本專欄中提到的類結構中,類描述中定義的所有函數都是內聯函數。
內聯函數帶來的好處有有哪些?
與普通函數相比,內聯函數的優(yōu)點如下:
消除了函數調用的時間開銷。從源代碼層面看,內聯函數具有函數的結構,但編譯后不具有函數的性質。因為必須在調用函數之前保存寄存器,在函數返回時還原寄存器,并且復制實際參數,所以程序也必須在新位置執(zhí)行。與宏定義相比,內聯函數的優(yōu)點如下:
1。內聯函數可以在運行時調試,但宏定義不能。編譯器會對內聯函數的參數類型進行安全檢查或自動類型轉換(與普通函數相同),但宏定義不會。內聯函數可以訪問類的成員變量,但宏定義不能。聲明在類號中同時定義的成員函數,自動轉換為內聯函數
內聯函數的定義:將函數定義為內聯函數就是在程序中的每個調用點將其“內聯”展開。在函數返回類型之前添加inline關鍵字。在類聲明中定義的成員函數自動成為內聯函數。內聯函數的應用:
1。重復調用函數;
2。函數只有幾行,不包含for、while和switch語句。內聯函數應該在頭文件中定義,這與其他函數不同。