cpp inline 内联函数定义在头文件和源文件的区别

2024-09-11  本文已影响0人  book_02

在C++中,内联函数(inline function)是一种建议编译器在调用点直接展开函数代码的机制,以减少函数调用的开销。内联函数的定义可以出现在头文件(.h)或源文件(.cc、.cpp等)中,但其作用域和可见性会根据定义位置的不同而有所差异。

1. 定义在头文件中的内联函数

当内联函数定义在头文件中时,其作用域和可见性如下:

2. 定义在源文件中的内联函数

当内联函数定义在源文件中时,其作用域和可见性如下:

3. 示例

3.1 头文件中的内联函数

// myheader.h
#ifndef MYHEADER_H
#define MYHEADER_H

inline void inlineFunction() {
    // 函数实现
}

#endif // MYHEADER_H

// file1.cpp
#include "myheader.h"

void foo() {
    inlineFunction(); // 可以调用内联函数
}

// file2.cpp
#include "myheader.h"

void bar() {
    inlineFunction(); // 可以调用内联函数
}

3.2 源文件中的内联函数

// file1.cpp
#include "myheader.h"

inline void inlineFunction() {
    // 函数实现
}

void foo() {
    inlineFunction(); // 可以调用内联函数
}

// file2.cpp
#include "myheader.h"

// 这里无法调用 inlineFunction,因为它在 file1.cpp 中定义

4. 使用场景

5. 注意事项

通过合理使用内联函数,可以在一定程度上提高程序的性能,同时控制函数的作用域和可见性。

上一篇 下一篇

猜你喜欢

热点阅读