簡體   English   中英

C++ 外部定義內聯函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM