當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


C++ Inline和Macro的區別用法及代碼示例


1. 內聯:
內聯函數是由以下定義的普通函數排隊關鍵詞。內聯函數是由編譯器擴展的短函數。並且它的參數僅被評估一次。內聯函數是自動成為內聯函數的短長度函數,無需使用排隊類內的關鍵字。

內聯函數的語法:

inline return_type function_name ( parameters )
{ 
 // inline function code
}

內聯函數的示例:


#include <iostream> 
using namespace std; 
  
// Inline function 
inline int Maximum(int a, int b) 
{ 
    return (a > b) ? a : b; 
} 
  
// Main function for the program 
int main() 
{ 
    cout << "Max (100, 1000):" << Maximum(100, 1000) << endl; 
    cout << "Max (20, 0): " << Maximum(20, 0) << endl; 
  
    return 0; 
} 

輸出:

Max (100, 1000): 1000
Max (20, 0): 20 

2、宏:
它也被稱為預處理器指令。宏定義為#定義關鍵詞。在程序編譯之前,隻要預處理器檢測到宏,預處理器就會檢查程序,然後預處理器用宏定義替換宏。

宏的語法:

#define MACRO_NAME Macro_definition 

宏示例:


#include <iostream> 
using namespace std; 
  
// macro with parameter 
#define MAXIMUM(a, b) (a > b) ? a : b 
  
// Main function for the program 
int main() 
{ 
    cout << "Max (100, 1000):"; 
    int k = MAXIMUM(100, 1000); 
    cout << k << endl; 
  
    cout << "Max (20, 0):"; 
    int k1 = MAXIMUM(20, 0); 
    cout << k1; 
  
    return 0; 
} 

輸出:

Max (100, 1000):1000
Max (20, 0):20 


C++中內聯和宏的區別:

S.NO 排隊
1. 內聯函數定義為排隊關鍵詞。 而宏是由#定義關鍵詞。
2. 通過內聯函數,可以訪問類的數據成員。 而宏無法訪問類的數據成員。
3. 在內聯函數的情況下,可以方便地調試程序。 而在宏的情況下,程序不容易調試。
4. 在內聯的情況下,參數僅計算一次。 而在宏的情況下,每次在程序中使用宏時都會對參數進行求值。
5. 在 C++ 中,內聯可以定義在類內部或類外部。 而宏始終是在程序開頭定義的。
6. 在 C++ 中,在類內部,短長度函數會自動成為內聯函數。 而宏是專門定義的。
7. 內聯不像宏那樣廣泛使用。 而宏則被廣泛使用。
8. 內聯不用於競爭性編程。 而宏在競技編程中使用得非常多。
9. 內聯函數由末尾的大括號終止。 雖然宏不以任何符號終止,但它以換行符終止。


相關用法


注:本文由純淨天空篩選整理自MKS075大神的英文原創作品 Difference between Inline and Macro in C++。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。