what is inline function
Inline function is a small function whose code the compiler is allowed to paste directly at each call site instead of doing a normal function call, mainly to reduce call overhead and sometimes improve speed.
What is an inline function?
- It is declared with the
inlinekeyword in languages like C and C++.
- Instead of jumping to a separate block of code, the compiler may replace the call (like
square(x)) with the function body itself (likex * x).
- This can reduce:
- Pushing arguments on the stack
- Saving return address and registers
- Jumping to and returning from the function
Example in C/C++:
cpp
inline int square(int x) {
return x * x;
}
At a call site like:
cpp
int y = square(5);
the compiler may turn it into:
cpp
int y = 5 * 5;
Key points to remember
- Performance intent, not a guarantee
inlineis a hint to the compiler, not an order.
* Modern compilers often decide to inline or not based on optimization heuristics, even if you don’t write `inline` explicitly.
- Best used for small, frequently used functions
- Simple math helpers (
add,square,max) or trivial getters/setters.
- Simple math helpers (
* Called many times (e.g., inside tight loops), where function call overhead can add up.
- When compilers may refuse to inline
- Function is too large
- Contains loops or recursion
- Uses static local variables or complex control flow (like switch/goto)
Inline vs normal function (conceptual)
| Aspect | Normal function | Inline function |
|---|---|---|
| Call behavior | Performs a real call with stack operations and jumps. | [1][9]Compiler may substitute body directly at call site. | [5][1][3]
| Speed | Usually fine; overhead may matter only in hot loops. | [9][1]Can be slightly faster for tiny, often-called functions. | [5][1][3]
| Code size | Smaller binary; single copy of function body. | [1]Can increase code size because body is duplicated at each call. | [1]
| Declaration style in C++ | Defined normally, often in a .cpp file. | [7][3]Defined with `inline`, often in headers; methods defined inside class body are implicitly inline. | [3][7]
Inline functions vs macros (why inline is safer)
Many older C codebases used macros for “fast” small operations, like:
c
#define MAX(a, b) ((a) > (b) ? (a) : (b))
Inline functions are generally preferred because:
- They respect type checking (arguments have types, conversions are checked).
- Arguments are evaluated exactly once (macros can evaluate them multiple times, causing bugs).
- They behave like normal functions in debugging and tooling.
Example inline alternative:
cpp
inline int max(int a, int b) {
return a > b ? a : b;
}
How inline is treated in modern C++
- In C++, any function defined inside a class definition is implicitly inline.
cpp
class Foo {
public:
int getX() const { return x; } // implicitly inline
private:
int x;
};
- You can also write
inlineon free functions or member functions defined outside the class, especially in headers, to avoid multiple-definition linker errors and to signal intended inlining.
Simple mental model
When you see an inline function, think:
“This is a tiny helper that the compiler is allowed to copy-paste directly where it’s used, to skip the small cost of a regular function call (if the compiler decides it’s worth it).”
SEO-style meta description
An inline function is a small function whose body the compiler may expand
directly at each call site instead of doing a normal function call, reducing
call overhead and sometimes improving performance.
Information gathered from public forums or data available on the internet and portrayed here.