📜  c++ inline in .cpp 而不是 header - C++ (1)

📅  最后修改于: 2023-12-03 14:39:49.882000             🧑  作者: Mango

C++中的inline函数

在C++编程中,当我们使用函数调用时,会涉及到函数调用的过程,包括函数栈的压入和弹出等,这会带来一定的开销。而inline函数的出现就是为了解决这个问题。

inline函数是一种特殊类型的函数,编译器会将该函数的代码直接嵌入到调用处,避免了函数调用的开销,并能提高程序的效率。通常情况下,我们会把inline函数的声明和定义都放在头文件中,这样可以减少代码的重复和增加可读性。但是在某些情况下,如果inline函数的代码较多,每个cpp文件都包含头文件会使整个程序的体积变大,因此可以将inline函数的定义放在cpp文件中,然后在头文件中声明该函数为inline函数。

以下是一个例子:

// test.cpp
#include "test.h"

inline int add(int x, int y)
{
    return x + y;
}

// test.h
#ifndef TEST_H
#define TEST_H

inline int add(int x, int y);

#endif

// main.cpp
#include "test.h"

int main()
{
    int a = 1, b = 2;
    int c = add(a, b);
    return 0;
}

这里的add函数是一个inline函数,定义放在了test.cpp文件中,而声明放在了test.h文件中。在main.cpp中调用该函数时,编译器会将该函数的代码直接嵌入到调用处,避免了函数调用的开销。

需要注意的是,将inline函数的定义放在cpp文件中并不是一种标准的写法,而是一种特殊情况下的解决方案。在大多数情况下,我们仍然应该将inline函数的定义和声明都放在头文件中。

通过使用inline函数,我们可以在保证程序效率的同时,避免了函数调用的开销,使程序更加高效。