C++中内联函数和宏定义的区别

C++中内联函数和宏定义的区别

1. 内联函数:

内联函数是由inline关键字定义的普通函数。内联函数是编译器展开的短小函数,其参数只计算一次。内联函数是自动成为内联函数,无需在类中使用inline关键字。

内联函数的语法:

inline 返回类型 函数名 ( 参数 )
{ 
 // 内联函数代码
}

内联函数示例:

#include <iostream>
using namespace std;
  
// 内联函数
inline int Maximum(int a, int b)
{
    return (a > b) ? a : b;
}
  
// 主函数
int main()
{
    cout << "最大值 (100, 1000):" << Maximum(100, 1000) << endl;
    cout << "最大值 (20, 0): " << Maximum(20, 0) << endl;
  
    return 0;
}  

输出:

最大值 (100, 1000): 1000
最大值 (20, 0): 20 

2. 宏定义:

宏定义也称为预处理器指令。宏是由#define关键字定义的。在程序编译之前,预处理器检查程序,每当预处理器检测到宏时,就会用宏定义替换宏。

宏定义语法:

#define 宏名称 宏定义 

宏定义示例:

#include <iostream>
using namespace std;
  
// 带参数的宏
#define 最大值(a, b) (a > b) ? a : b
  
// 主函数
int main()
{
    cout << "最大值 (100, 1000):";
    int k = 最大值(100, 1000);
    cout << k << endl;
  
    cout << "最大值 (20, 0):";
    int k1 = 最大值(20, 0);
    cout << k1;
  
    return 0;
}  

输出:

最大值 (100, 1000):1000
最大值 (20, 0):20 

C++中内联函数和宏定义的区别:

序号 内联函数
1. 内联函数通过 inline 关键字定义。 而宏通过 #define 关键字定义。
2. 通过内联函数,可以访问类的数据成员。 而宏无法访问类的数据成员。
3. 在内联函数中,程序可以很容易地进行调试。 而在宏中,程序调试不容易。
4. 在内联中,参数仅计算一次。 而在宏中,每次使用宏时都要计算参数。
5. 在C++中,内联可以在类内或类外定义。 而宏总是在程序开头定义。
6. 在C++中,短长度函数会自动转换成内联函数。 而宏需要特别定义。
7. 内联函数没有宏那么广泛地使用。 而宏使用广泛。
8. 内联函数在竞赛编程中不常使用。 而宏在竞赛编程中非常常用。
9. 内联函数以右花括号结尾。 而宏不以任何符号结尾,以换行符结束。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程