Struktury i C++
Funkcje inline

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ść


Tomasz Kapela, Kraków 2011-2020