When to Make a Function Inline in C++

c++inline

Why should I do something like this:

inline double square (double x) { return x * x; }

instead of

double square (double x) { return x * x; }

Is there a difference?

Best Answer

The former (using inline) allows you to put that function in a header file, where it can be included in multiple source files. Using inline makes the identifier in file scope, much like declaring it static. Without using inline, you would get a multiple symbol definition error from the linker.

Of course, this is in addition to the hint to the compiler that the function should be compiled inline into where it is used (avoiding a function call overhead). The compiler is not required to act upon the inline hint.

Related Question