Dajmy sobie prosty kod:
inline int xxx()
{
return 5;
}
int main()
{
int x = 4;
x = xxx();
return 0;
}
Teraz skompilujmy ten kod pod GCC z opcją --save-temps i zobaczmy, co wyrzucił do pliku *.s:
.file "1.c"
.text
.globl xxx
.type xxx, @function
xxx:
pushl %ebp
movl %esp, %ebp
movl $5, %eax
popl %ebp
ret
.size xxx, .-xxx
.globl main
.type main, @function
main:
pushl %ebp
movl %esp, %ebp
subl $16, %esp
movl $4, -4(%ebp)
call xxx
movl %eax, -4(%ebp)
movl $0, %eax
leave
ret
.size main, .-main
.ident "GCC: (Ubuntu 4.4.3-4ubuntu1) 4.4.3"
.section .note.GNU-stack,"",@progbits
Wszędzie piszą, że funkcje inline nie są kompilowane jako funkcje, a po prostu ich kod jest wrzucany w miejscu wywołania. Coś chyba to nie działa