An inline function is a request and not a command. Hence it won't be compiled as an inline function always. Inline-expansion could fail if the inline function contains loops, the address of an inline function is used, or an inline function is called in a complex expression. The rules for in-lining are compiler dependent.