[英]C++ externally defining an inline function
我正在嘗試在頭文件中向前聲明的 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
關鍵字。
foo.h
void foo();
文件
#include <foo.h>
extern __forceinline void foo() {
/*...*/
}
主程序
#include <foo.h>
int main() {
foo();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.