C++中内联和宏的区别

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 内联函数以大括号结尾。 虽然宏没有由任何符号终止,但它由新行终止。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程