巨集 函式和內聯

2021-09-25 11:16:04 字數 595 閱讀 4646

先說巨集和函式的區別: 

1. 巨集做的是簡單的字串替換(注意是字串的替換,不是其他型別引數的替換),而函式的引數的傳遞,引數是有資料型別的,可以是各種各樣的型別. 

2. 巨集的引數替換是不經計算而直接處理的,而函式呼叫是將實參的值傳遞給形參,既然說是值,自然是計算得來的. 

3. 巨集在編譯之前進行,即先用巨集體替換巨集名,然後再編譯的,而函式顯然是編譯之後,在執行時,才呼叫的.因此,巨集占用的是編譯的時間,而函式占用的是執行時的時間. 

4. 巨集的引數是不佔記憶體空間的,因為只是做字串的替換,而函式呼叫時的引數傳遞則是具體變數之間的資訊傳遞,形參作為函式的區域性變數,顯然是占用記憶體的. 

5. 函式的呼叫是需要付出一定的時空開銷的,因為系統在呼叫函式時,要保留現場,然後轉入被呼叫函式去執行,呼叫完,再返回主調函式,此時再恢復現場,這些操作,顯然在巨集中是沒有的.

內聯函式與巨集的區別:

1.內聯函式在執行時可除錯,而巨集定義不可以;

2.編譯器會對內聯函式的引數型別做安全檢查或自動型別轉換(同普通函式),而巨集定義則不會; 

3.內聯函式可以訪問類的成員變數,巨集定義則不能; 

4.在類中宣告同時定義的成員函式,自動轉化為內聯函式。

內聯函式和巨集

1.內聯函式 在c 中我們通常定義以下函式來求兩個整數的最大值 複製 如下 int max int a,int b 為這麼乙個小的操作定義乙個函式的好處有 閱讀和理解函式 max 的呼叫,要比讀一條等價的條件表示式並解釋它的含義要容易得多 如果需要做任何修改,修改函式要比找出並修改每一處等價表示式容...

內聯函式和巨集

第一部分 巨集 為什麼要使用巨集呢?因為函式的呼叫必須要將程式執行的順序轉移到函式所存放在記憶體中的某個地 址,將函式的程式內容執行完後,再返回到轉去執行該函式前的地方。這種轉移操作要求在轉去執行前要儲存現場並記憶執行的位址,轉回後要恢復現場,並按原來 儲存位址繼續執行。因此,函式呼叫要有一定的時間...

內聯函式和巨集

內聯函式是為了提高程式執行速度的一種改進。當程式執行時,有時候需要重複呼叫乙個函式,但是因為重複呼叫這個函式,會不斷的造成函式呼叫,會不斷進棧出棧造成cpu的消耗。而內聯函式是在編譯時就將這個函式邊入進去,不用再進行位址的跳轉。但是不可避免的產生了一些 記憶體的消耗,所有有時候使用者在申請內聯時,內...