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. | 內聯函數由末尾的大括號終止。 | 雖然宏不以任何符號終止,但它以換行符終止。 |
相關用法
- C++ Inline和Normal的區別用法及代碼示例
- C++內聯函數用法及代碼示例
- C++ Integer轉String用法及代碼示例
- C++ Iswctype()用法及代碼示例
- C++ INT_MAX用法及代碼示例
- C++ INT_MIN用法及代碼示例
- C++ Implementing of strtok()用法及代碼示例
- C++ Iterators和Pointers的區別用法及代碼示例
- C++ cos()用法及代碼示例
- C++ sin()用法及代碼示例
- C++ asin()用法及代碼示例
- C++ atan()用法及代碼示例
- C++ atan2()用法及代碼示例
- C++ acos()用法及代碼示例
- C++ tan()用法及代碼示例
- C++ sinh()用法及代碼示例
- C++ ceil()用法及代碼示例
- C++ tanh()用法及代碼示例
- C++ fmod()用法及代碼示例
- C++ acosh()用法及代碼示例
- C++ asinh()用法及代碼示例
- C++ floor()用法及代碼示例
- C++ atanh()用法及代碼示例
- C++ log()用法及代碼示例
- C++ trunc()用法及代碼示例
注:本文由純淨天空篩選整理自MKS075大神的英文原創作品 Difference between Inline and Macro in C++。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。