cpp(6).内联函数分析

inline 内联函数的主要作用,在编译的时候不进行函数调用,编译器将内联函数的代码粘贴在调用处,目的是解决函数调用的效率问题,提高效率

inline 关键字声明内联函数,C++中 inline 内联编译的限制:不能存在任何形式的循环语句;不能存在过多的条件判断语句;函数体不能过大;不能对函数进行取址操作;函数内联声明必须在调用语句之前。(针对以前的编译器)

如:

inline int func(int a, int b)

{

  return a < b ? a : b;

}

注意:内联函数声明时,inline 关键字必须和函数定义结合在一起,否则编译器会直接忽略内联请求。

#include <iostream>
using namespace std;

#define FUNC(a, b) ((a) < (b) ? (a) : (b))

inline int func(int a, int b)
{
    return a < b ? a : b;
}

int main()
{
    int a = 1;
    int b = 3;
    
    int c = func(++a, b);
    //    宏    int c = FUNC(++a, b);    等价于    int c = ((++a) < (b) ? (++a) : (b));

    cout << "a = " << a << endl
        << "b = " << b << endl
        << "c = " << c << endl;
}

输出结果:

a = 2

b = 3

c = 2

内联函数具有普通函数的特征(参数检查,返回类型等等);内联请求可能被编译器拒绝;函数被内联编译后,函数体直接扩展到调用的地方。

#include <iostream>
using namespace std;

inline
int add_inline(int n);

int main()
{
    int r = add_inline(10);

    cout << "r = " << r << endl;
}

inline int add_inline(int n)
{
    int ret = 0;

    for (int i = 0; i < n; i++)
    {
        ret += i;
    }

    return ret;
}

输出结果:

r = 45

猜你喜欢

转载自www.cnblogs.com/kenantongxue/p/10422947.html