關鍵區別–宏與內聯函數
宏是一段代碼,它是預處理器指令。內聯函數是C++增強功能,以最小化程序的執行時間。因此,宏和內聯函數的關鍵區別在於,宏由預處理器檢查,而內聯函數由編譯器檢查。
宏包含在程序的開頭,前面有一個哈希符號。當程序中有宏名稱時,它將被宏的內容替換。
目錄
1. 概述和主要區別
2. 什麼是宏
3. 什麼是內聯函數
4. 並排比較-表格形式的宏與內聯函數
5. 摘要
什麼是宏(macro)?
預處理器是在源代碼通過編譯器之前對其進行處理的程序。它使用預處理器命令行或指令進行操作。在程序中,預處理器指令放在主程序之前的源程序中。在源代碼通過編譯器之前,它由預處理器檢查預處理器指令。預處理器指令具有#符號。與其他語句不同,它們不以分號結尾。預處理器指令的一種類型是宏。一般來說,宏是用大寫字母寫的。
根據上面的程序,第3行和第4行表示宏。計算面積時,使用定義的宏替換PI值。在第14行volume=CUBE(value)中,預處理器將語句展開為volume=(value*value*value)。找到立方體可以寫成函數,但在這裡它是用宏寫的。如果有一個語句volume=CUBE(x+y),那麼它將擴展為volume=(x+y*x+y*x+y)。
一些編程標記很容易鍵入錯誤。可以使用宏替換它們。e、 g.#定義和&,#定義或| |。宏定義還可以包含表達式,例如#define AREA 4*5.56。
什麼是內聯函數(inline function)?
當一個函數被調用時,編譯器需要一些時間來執行它。如果函數不是很複雜,程序員可以將函數轉換為內聯函數。參考以下程序。
print_hello是一個簡單的函數。它在調用函數時打印字符串“Hello”。該函數的執行時間為0.187s,使用inline關鍵字如下,執行時間減少到0.064s。
因此,通過使用inline關鍵字,可以減少執行時間。如果存在循環、switch語句以及函數包含靜態變量或遞歸函數,則內聯函數可能無法工作。
宏(macro)和內聯函數(inline function)的區別
宏與內聯函數 | |
宏是一段代碼,它是一個預處理器指令,包含在程序的開頭,前面有一個哈希符號。 | 內聯函數是C++增強功能,以最小化程序的執行時間。 |
評估時間 | |
在宏中,每次在程序中使用參數時都會對其求值。 | 在inline中,參數被計算一次。 |
審核人 | |
預處理器檢查宏。 | 編譯器檢查內聯函數。 |
關鍵字 | |
馬可用“定義”。 | inline函數使用關鍵字“inline”。 |
使用 | |
宏可用於定義常量、表達式、文本替換和函數定義等。 | 內聯函數可用於最小化程序的執行時間。 |
終止 | |
宏以新行結束。 | 內聯函數以內聯函數結尾處的大括號結束。 |
定義點 | |
在程序開始時定義一個Marco。 | 內聯函數可以在類的內部或外部。 |
總結 - 宏(macro) vs. 內聯函數(inline function)
本文討論了宏和內聯函數之間的區別。C++編程中使用了這些概念。宏和內聯函數的區別在於,宏由預處理器檢查,而內聯函數由編譯器檢查。