extern inline 是做什麼的?
與 inline 和 static inline 不同,extern inline 在特定上下文中使用:
在 C99 之前的編譯器中,特別是 GCC,內聯沒有定義的語義。然而,GCC 實現了內聯,作為編譯器在可能的情況下內聯函數的提示。儘管有此建議,但該函數的外聯版本始終會發出並保持外部可見。
為了解決此限制,GCC 引入了 extern 內聯和靜態內聯。
GNU89:
-
內聯:可能是內聯,但總是會發出外聯版本並且外部可見。
-
extern inline: 不產生外聯版本,但可能從另一編譯呼叫版本unit.
-
static inline:不會產生外部可見的外聯版本,但可能會產生檔案靜態一.
C99(或GNU99):
-
inline: 與GNU89 extern inline 類似,沒有外部可見的函數被發射。
-
extern inline:與GNU89 inline類似,發出外部可見的程式碼,只允許一個翻譯單元使用它。
-
static inline:與GNU89 static inline類似,沒有外部符號或發出對一個的呼叫。
C :
- 內聯函數必須在所有編譯單元中定義相同。
- extern inline 或 static inline 沒有標準定義,但有些編譯器是基於以下方式提供這些構造: GNU89 模型。
以上是C 和 C 的 `inline`、`extern inline` 和 `static inline` 有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!