c++ inline function?

Pwnna picture Pwnna · May 12, 2011 · Viewed 55.4k times · Source

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?

Answer

Greg Hewgill picture Greg Hewgill · May 12, 2011

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.