可视化C++外部定义内联函数



我正在尝试在头文件中向前声明的 CPP 文件中定义一个函数。我想知道正确的方法,因为我尝试过的所有内容都是编译和运行的,而且我的分析技能不足以调查函数是否真正内联。

这是我想做的

/// Source.h
void inlined_func(); // what specifiers should I put here?
// I was thinking about doing both `extern` and `__forceinline`

/// Source.cpp
__forceinline void inlined_func()
{
std::cout << "we're in the inlined func" << std::endl;
}

默认情况下声明为__forceinline的函数会获得内部链接(该名称只能在当前翻译单元中引用(,就像声明为static一样。如果尝试在另一个翻译单元中使用它,则会收到链接器错误LNK2001 unresolved external symbol ...。要强制外部链接,以便可以在其他翻译单元中引用它,请使用extern关键字。

福.H

void foo();

傅.cpp

#include <foo.h>
extern __forceinline void foo() {
/*...*/
}

主.cpp

#include <foo.h>
int main() {
foo();
}

最新更新