Funkcje inline są z założenia krótkimi funkcjami, dla których w miejscu wywołania wkleja się ich ciało zamiast robić skok do podprogramu.
Funkcje te miały zastąpić makra preprocesora.
Funkcje inline poprzedzamy w C++ słowem kluczowym inline. Jest to jednak tylko sugestia dla kompilatora.
Ciało takiej funkcji kompilator musi znać w momencie kompilacji dlatego najczęściej umieszcza się je w plikach nagłówkowych.
int kwadrat(int x){ return x*x; } inline int kwadrat_inline(int x){ return x*x; } int main(){ int x = 5, y ; y = kwadrat(x); y = kwadrat_inline(x2); } | _Z7kwadrati: push ebp mov ebp, esp mov eax, [ebp+8] imul eax, [ebp+8] pop ebp ret main: push ebp mov ebp, esp and esp, -16 sub esp, 32 mov [esp+28], 5 mov eax, [esp+28] push eax call _Z7kwadrati mov [esp+24], eax mov eax, [esp+28] imul eax, [esp+28] mov [esp+24], eax mov eax, 0 leave ret |
W praktyce kompilator GCC w tym przypadku nie inline'ował funkcji, a przy włączonej optymalizacji po prostu obliczał jej wartość