簡體   English   中英

C ++內聯函數原型

[英]C++ Inline Function Prototypes

我遇到了一個頭文件,該頭文件包含內聯和const的各種函數原型聲明:

inline bool Foo1() const;
inline bool Foo2() const;
inline bool Foo3() const;
...

我知道inline關鍵字允許編譯器在調用時(可能)擴展該函數,但是為什么不包括該函數的主體呢?

如果定義包含在頭文件中,這對我來說更有意義:

inline bool Foo1() const { return m_Foo1; };
inline bool Foo2() const { return m_Foo2; };
inline bool Foo3() const { return m_Foo3; };
...

在原型上使用內聯有什么意義?

可能這只是一個錯誤,但程序員最有可能希望使函數內聯,但又不想通過這些函數的實現使文件的那部分雜亂無章。 編寫“僅標頭”代碼時,這是一種相當常見的模式。 您有一個沒有(或很少)實現的普通頭文件,並且包含另一個文件,但其行為類似於一個實現文件,並且包含所有實現。

它只是在允許緊湊地顯示類接口。

函數定義稍后存在於編譯單元中(在調用之前, 如果已調用)

來自多布博士

函數定義或函數原型都可以內聯聲明。 如果將函數原型聲明為內聯,則在調用該函數時,該函數的單獨定義必須出現在模塊中的其他位置

有很多原因。

  1. 您需要使用空函數聲明來解決其中一個函數調用另一個函數的依賴關系問題。
  2. 出於風格原因。

唯一的限制是,函數定義必須包含在使用內聯函數的每個編譯單元中。 否則,內聯函數在聲明和定義方式上與普通函數完全相同。

因為這些功能可能位於目標文件中,並且開發人員不希望任何人看到源代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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