| |||
| Home > ARM Compiler Reference > C and C++ implementation details > Extern inline functions | |||
The ISO C++ Standard requires inline functions to be defined
wherever you use them. To prevent the clashing of multiple out-of-line
copies of inline functions, the ARM C++ compiler emits out-of-line extern functions
in common sections.
The compiler emits inline functions out-of-line, in the following cases:
The address of the function is taken, for example:
inline int g() {return 1;}
int (*fp)() = &g
The function cannot be inlined, for example, a recursive function:
inline int g() {return g();}
The heuristic used by the compiler decides that
it is better not to inline the function. This heuristic is influenced
by -Ospace and -Otime. If
you use -Otime, the compiler inlines more functions.
You can override this heuristic by declaring a function with __forceinline (see Function storage class qualifiers), for example:
__forceinline int g() {return 1;}
You can also use the --forceinline compiler
option (see Defining optimization criteria).