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. | 内联函数以右花括号结尾。 | 而宏不以任何符号结尾,以换行符结束。 |