define與inline的區別

2021-05-25 20:19:30 字數 576 閱讀 5607

define成為"巨集",在c語言程式設計中非常重要,它在程式編譯時只是在預處理的過程中實施簡單的替換操作而已。由於在替換過程中可能出現的各種不安全性問題,在c++提倡採用const或者inline(內聯函式)的方式替代巨集。

內聯函式和普通函式相比可以加快程式的執行速度,但它是以增加程式儲存空間維代價的,由於不需要中斷呼叫,在編譯內聯函式的時候內聯函式可以直接被嵌入目標**中。

對於短小的**,inline可以帶來一定效率的提公升,且與c時代的define(巨集)相比,它更安全可靠。

巨集和內聯函式的主要區別如下:

1.巨集是**處不加任何驗證的簡單替代,而內聯函式是將**直接插入呼叫處,而減少了普通函式呼叫時的資源消耗。

2.巨集不是函式,只是在編譯前預處理階段將程式中有關字串替換成巨集體。

3.inline是函式,但在編譯中不單獨產生**,而是將有關**嵌入到呼叫處。

許多c程式設計師的經驗表明,巨集會為程式設計帶來不小的安全隱患,許多由巨集產生的問題就是實證。

所以在c++中引入的const關鍵字以及inline函式可以完成與巨集同樣的功能,且更安全,更可靠。

結論:逐步捨棄define,慢慢過渡到c++的標準上來。

define與inline的區別

一 內聯函式inline inline 內聯函式對編譯器提出建議,是否進行巨集替換,編譯器有權拒絕,既為提出申請,不一定會成功。函式呼叫時都會產生一些額外的開銷,主要是系統棧的保護 的傳遞 系統棧的恢復以及引數傳遞等。對於那些函式體很小 執行時間很短但又頻繁使用的函式,定義為內聯函式提高函式呼叫的效...

define巨集定義與inline內聯的異同

二 define巨集定義與inline內聯 1 內聯函式在可讀性方面與函式是相同的,而在編譯時是將函式直接嵌入呼叫程式的主體,省去了呼叫 返回指令,這樣在執行時速度更快。2 內聯函式可以除錯,而巨集定義是不可以除錯的。內聯函式與巨集本質上是兩個不同的概念如果程式編寫者對於既要求快速,又要求可讀的情況...

C中 define和inline的區別

c中巨集定義和內聯函式的區別是很容易讓人忽視的乙個地方,也是面試的時候經常被提起的乙個問題。前幾天寫 的時候由於對巨集定義乙個細節的忽視,導致程式執行總是出錯。現在把巨集定義可能出現的問題總結一下。出錯的 結構如下 cpp view plain copy if rlc dc bit msk data...