C++中内联和宏的区别
1. 内联
内联函数是由 inline 关键字定义的普通函数。内联函数是由编译器扩展的短函数。并且它的参数只被评估一次。内联函数是在类中不使用 inline 关键字的情况下自动成为内联函数的短长度函数。
内联函数的语法:
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
关键字定义。在程序编译之前,只要预处理器检测到宏,预处理器就会检查程序,然后预处理器用宏定义替换宏。
宏的语法:
#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++ 中内联和宏的区别:
编号 | 内联 | 宏 |
---|---|---|
1 | 内联函数由 inline 关键字定义。 |
宏是由 #define 关键字定义的。 |
2 | 通过内联函数,可以访问类的数据成员。 | 宏不能访问类的数据成员。 |
3 | 内联函数的情况下,可以方便的调试程序。 | 在宏的情况下,程序不容易调试。 |
4 | 在内联的情况下,参数只计算一次。 | 在宏的情况下,每次在程序中使用宏时都会评估参数。 |
5 | 在 C++ 中,内联可以定义在类内或类外。 | 宏始终是在程序开始时定义的。 |
6 | 在 C++ 中,在类内部,短长度函数自动成为内联函数。 | 宏是专门定义的。 |
7 | 内联不像宏那样广泛使用。 | 宏被广泛使用。 |
8 | 内联不用于竞争性编程。 | 宏在竞争性编程中非常有用。 |
9 | 内联函数以大括号结尾。 | 虽然宏没有由任何符号终止,但它由新行终止。 |