C++ 内联函数 inline

发布时间 2023-12-04 17:04:15作者: 廿陆

宏定义实现和普通函数实现:

  - 宏定义是直接在实现的时候进行代码替换,可能产生结果异常问题。

  - 普通函数实现:调用函数进出函数体的时候时间开销可能过大。

 1 #include <iostream>
 2 using namespace std;
 3 //宏实现
 4 #define GETMAX(a, b)((a) > (b) ? (a) : (b))
 5 //函数实现
 6 int getMax(int a, int b)
 7 {
 8     return a > b ? a : b;
 9 }
10 int main()
11 {
12     int n = 10;
13     int n1 = GETMAX(n, 2);//10
14     //int n1 = ((10) > (2) ? (10) : (20));
15     int n2 = GETMAX(n++, 2);//11
16     //int n2 = ((10) > (2) ? (11) : (2));
17     int i = 10;
18     int n3 = getMax(i, 2);//10
19     //return 10 > 2 ? 10 : 2
20     int n4 = getMax(i++, 2);//10
21     //return 10 > 2 ? 10 : 2
22     cout << n1 << endl;
23     cout << n2 << endl;
24     cout << n3 << endl;
25     cout << n4 << endl;
26     system("pause");
27     return 0;
28 }

内联函数:一般是在当前项目的很多地方都要使用

  1.inline是对编译器的建议(结合普通函数和宏定义):建议编译器将函数置为内联,编译器根据开销判断是使用函数还是宏定义。

    一般会使用宏定义,函数体复杂或者Debug模式则使用普通函数调用。

  2.debug版本没有inline,为了方便调试

  3.内联函数必须写在头文件中

//inline.h 
inline int getMax(int a, int b)
{
    return a > b ? a : b;
}

Main.cpp

// Main.cpp
#include "inline.h"

    xxx