C 中的內聯函式

2021-10-22 02:52:44 字數 1057 閱讀 1759

以inline修飾的函式叫做內聯函式,編譯時c++編譯器會在呼叫內聯函式的地方展開,沒有函式壓棧的開銷,內聯函式提公升程式執行的效率

inline

void

swap

(int

& a,

int& b)

intmain()

像swap函式是乙個需要頻繁呼叫的函式。

呼叫函式的時候需要建立棧幀,建立棧幀是有空間和行能的消耗的

那怎麼解決這個問題呢?

在c語言中:使用巨集函式,但是巨集函式也有缺點,不方便除錯,複雜且容易出錯

在c++中:inline內聯函式,相比巨集函式,inline函式完美的解決問題

inline是一種以空間換時間的做法,省去呼叫函式額外開銷,所以**很長(一般超過十行)或者有遞迴的函式不適用使用內聯函式

inline對於編譯器而言只是乙個建議,編譯器會自動優化,如果定義為inline函式體內有遞迴等,編譯器優化時會忽略掉內聯

檔案

#include

using

namespace std;

inline

voidf(

int i)

;檔案#include

"f.h"

voidf(

int i)

檔案#include

"f.h"

intmain()

在f.h中宣告,在f.cpp中定義,當mian.cpp呼叫這個函式的時候就會去找他的位址,但是找不到位址。

inline函式的宣告要在原始檔中

巨集的優缺點?

答:優點是

增強**的復用性

.提高效能

缺點是不方便除錯巨集(因為預編譯階段進行了替換)

導致**的可讀性差,可維護性差,容易誤用

沒有型別安全的檢查

c++方面怎麼替代巨集?

答:巨集常量定義 使用const和enum 替代巨集

巨集函式定義 使用inline函式替代巨集

C 中的內聯函式

華清遠見嵌入式學院 講師。c 中存在一些具有特殊意義或功能的特殊函式,我們來簡單介紹一下內聯函式。從軟體工程的角度來看,我們通常將乙個程式通過一組函式來進行實現,但是函式的呼叫涉及到執行時間的開銷,如果有的函式需要頻繁使用,則累計占用的時間會很長,所以c 提供了內聯函式的機制來提高效率,也就是在編譯...

C 中的內聯函式

c 中的內聯函式 華清遠見嵌入式學院講師。c 中存在一些具有特殊意義或功能的特殊函式,我們來簡單介紹一下內聯函式。從軟體工程的角度來看,我們通常將乙個程式通過一組函式來進行實現,但是函式的呼叫涉及到執行時間的開銷,如果有的函式需要頻繁使用,則累計占用的時間會很長,所以c 提供了內聯函式的機制來提高效...

C 中的內聯函式

本文主要和大家一起來學習一下c 中的內聯函式,旨在能夠更深層次的了解和掌握c 相關用法,力爭做到知其然還要知其所以然。關於內聯函式,本文主要從以下幾個方面進行了整理和歸納。一 相關描述 1 內聯函式主要目的是為了提高函式的執行效率,用關鍵字inline放在函式定義的前面即可,將函式指定為內聯函式。2...