Home >Backend Development >C++ >What is the Difference Between `inline`, `static inline`, and `extern inline` in C/C ?

What is the Difference Between `inline`, `static inline`, and `extern inline` in C/C ?

Susan Sarandon
Susan SarandonOriginal
2024-12-20 08:07:10757browse

What is the Difference Between `inline`, `static inline`, and `extern inline` in C/C  ?

Understanding the Role of extern inline

In the realm of programming, inline functions serve as optimizations to enhance performance. Inline functions are suggestions to the compiler, inviting it to consider incorporating the function's implementation directly within the caller's code, effectively eliminating the function call overhead. However, the compiler retains discretion and may not always comply with the inline request. Additionally, inline functions typically produce linkable object code.

Consider static inline, which operates similarly to inline in terms of optional function inlining. However, it does not produce linkable object code if inlined. This prevents other modules from linking to the inlined function.

Delving into extern inline

Where does extern inline fit into this scheme? Extern inline, primarily found in pre-C99 compilers such as GCC, behaves distinctly from both inline and static inline.

  • inline: May or may not inline, but always produces linkable object code.
  • static inline: May or may not inline, but does not produce linkable object code.
  • extern inline: Does not produce linkable object code and necessitates the existence of an out-of-line version in another compilation unit.

Beyond C and C

This distinction is exclusive to C and C . In C , the meaning of inline has evolved, and it resembles extern inline in C89, excluding the requirement for an out-of-line definition.

Compiler Variations

Different compiler vendors and versions can interpret extern inline idiosyncratically. Refer to compiler documentation for specific implementation details.

The above is the detailed content of What is the Difference Between `inline`, `static inline`, and `extern inline` in C/C ?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn