Inline Function in C

Last Updated : 3 Jul, 2026

An inline function is a function declared with the inline keyword that suggests the compiler replace the function call with the actual function code. It is mainly used for small, frequently called functions to reduce function call overhead.

  • Inline functions can improve performance by eliminating the overhead of function calls for small functions.
  • The inline keyword is only a request to the compiler; it may choose not to inline a function if it is too large or complex.
C++
#include <stdio.h>

inline int add(int a, int b)
{
    return a + b;
}

int main()
{
    int result = add(5, 3);
    printf("Sum = %d", result);
    return 0;
}

Syntax

The syntax of an inline function is similar to a normal function, with the inline keyword placed before the function declaration or definition.

inline return_type function_name(parameters){
// function body
}

Explanation

  • inline: Suggests the compiler replace the function call with the function body whenever possible.
  • return_type: Specifies the type of value returned by the function.
  • parameters: The input values accepted by the function. This can be left empty if the function takes no arguments.

Working

An inline function works by allowing the compiler to replace a function call with the actual function body during compilation whenever possible.

  • Step 1: The function is declared using the inline keyword.
  • Step 2: When the function is called, the compiler checks whether it is suitable for inlining.
  • Step 3: If suitable, the compiler replaces the function call with the function's code at the call site.
  • Step 4: If the function is not inlined (due to complexity or compiler decisions), it is executed as a normal function call.

Note: The inline keyword is only a suggestion to the compiler, so inlining is not guaranteed.

Inline Vs Normal Function

There are several key differences between inline and normal functions some of which are shown below:

Inline FunctionNormal Function
Defined with the inline keywordDefined without the inline keyword
Function call is replaced by the function’s code (inline substitution)Function call involves a normal call with a stack push
Can improve performance by eliminating function call overheadMay have overhead due to function call and return mechanisms
May increase binary size if overused (due to repeated code)Doesn’t affect code size as much, uses memory only for function calls

Inline Function Vs Macro

An inline function is similar to a macro in that it can substitute the function call with actual code. However, there are some key differences between inline functions and macros

Inline FunctionMacro
Type-checked, respects data types.No type-checking can lead to unexpected results.
Easier to debug, behaves like a regular function.Harder to debug, errors may not be clear.
Parameters are evaluated once.Parameters may be evaluated multiple times.
Can be recursive.Cannot be recursive.

Uses of Inline Functions

Inline functions are most effective for small functions where reducing function call overhead can improve performance.

  • Use inline functions for small and frequently called functions to reduce function call overhead and improve performance.
  • They are useful in performance-critical applications, such as embedded systems and real-time software, where execution speed is important.
  • Prefer inline functions over macros when type safety, proper scope, and easier debugging are required.

Advantages

Inline functions help improve program efficiency by reducing the overhead associated with function calls.

  • Reduces function call overhead by replacing the function call with its actual code.
  • Improves performance for small and frequently called functions.
  • Provides type checking and scope rules, making it safer than macros.
  • Makes the code easier to debug and maintain compared to macros.

Limitations

Although inline functions can improve performance, they are not suitable for every situation.

  • The compiler may ignore the inline request for large or complex functions.
  • Excessive use of inline functions can increase the size of the executable due to code duplication.
  • Inlining large functions may reduce performance by increasing instruction cache usage.
  • Since inlining is compiler-dependent, its behavior may vary across different compilers and optimization levels.
Comment