Home  >  Article  >  Backend Development  >  **Does the `inline` keyword guarantee function inlining in C ?**

**Does the `inline` keyword guarantee function inlining in C ?**

Linda Hamilton
Linda HamiltonOriginal
2024-10-26 12:57:29347browse

**Does the `inline` keyword guarantee function inlining in C  ?**

Function Inlining Decisions: The Compiler's Perspective

When compiling C code, the question arises: do functions only get inlined if explicitly declared as inline?

The answer lies in the role of the inline keyword. Contrary to popular belief, it does not mandate function inlining. Instead, it informs the linker that multiple identical function definitions are acceptable. This becomes crucial when defining functions in header files. Without the inline keyword, the linker will encounter "multiple definition" errors if the header is included in multiple compilation units.

The choice of the inline keyword reflects the typical purpose of defining functions in headers: to facilitate compiler inlining. Since the compiler cannot inline a function unless it has the complete definition, defining it in a header (and marking it inline) allows for inlining regardless of where the function is called.

However, it's important to note that compilers have evolved beyond their traditional optimization capabilities. Modern linkers may also perform inlining optimizations, even for functions defined in different compilation units.

Therefore, the decision to inline a function is ultimately made by the compiler (or linker) based on various factors, including efficiency considerations and potential code bloat. Relying on explicit inline declarations may not be necessary in all cases, but it does ensure that the function can be inlined if the compiler chooses to do so.

The above is the detailed content of **Does the `inline` keyword guarantee function inlining in 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