inline關鍵字說一下 和巨集定義有什麼區別

2021-10-18 04:56:53 字數 544 閱讀 1422

inline是內聯的意思,可以定義比較小的函式。因為函式頻繁呼叫會占用很多的棧空間,進行入棧出棧操作也耗費計算資源,所以可以用inline關鍵字修飾頻繁呼叫的小函式。編譯器會在編譯階段將**體嵌入內聯函式的呼叫語句塊中。

內聯函式在編譯時展開,而巨集在預編譯時展開。

在編譯的時候,內聯函式直接被嵌入到目標**中去,而巨集只是乙個簡單的文字替換。

內聯函式可以進行諸如型別安全檢查、語句是否正確等編譯功能,巨集不具有這樣的功能。

巨集不是函式,而inline是函式;

巨集在定義時要小心處理巨集引數,一般用括號括起來,否則容易出現二義性。而內聯函式不會出現二義性。

inline可以不展開,巨集一定要展開。因為inline指示對編譯器來說,只是乙個建議,編譯器可以選擇忽略該建議,不對該函式進行展開。

巨集定義在形式上類似於乙個函式,但在使用它時,僅僅只是做預處理器符號表中的簡單替換,因此它不能進行引數有效性的檢測,也就不能享受c++編譯器嚴格型別檢查的好處,另外它的返回值也不能被強制轉換為可轉換的合適的型別,這樣,它的使用就存在著一系列的隱患和侷限性。

整理一下幾個關鍵字

今天學了幾個關鍵字,了解了它們的用法,在接下來的學習中還需要繼續熟悉練習。static 2 區域性靜態變數 侷限於特定函式,但出作用於不釋放,在函式體內的靜態變數的值也能夠維持。4 存放位置 程式開始時,存放在全域性資料區,結束時釋放空間 const const修飾的值是唯讀的變數。1 修飾唯讀變數...

inline關鍵字和內聯函式

在大多數的機器上,呼叫函式都要做很多任務作 呼叫前要先儲存暫存器,並在返回時恢復 複製實參 程式還必須轉向乙個新位置執行。一言以蔽之 inline 函式避免函式呼叫的開銷。將函式指定為 inline 函式,通常 就是將它在程式中每個呼叫點上 內聯地 展開,這個過程發生在編譯期 正因為如此,也就不會有...

深入聊一下const關鍵字

const是乙個c語言的關鍵字,它限定乙個變數不允許被改變。使用const在一定程式上可以提高程式的健壯性,另外,在 別人 的時候,清晰理解const所起的作用,對理解別人的程式有所幫助。下面簡單描述一下const,基本都是教科書的知識。const修飾的變數,其值存放在唯讀資料段中,其值不能被改變。...