Функції, оголошення яких починається ключовим словом inline, називають вбудованими функціями. Виконання таких функцій має бути максимально швидким, тому компілятор «вбудує» код такої функції у місці її виклику. Це може збільшити обсяг коду програми, оскільки кожен виклик функції буде замінений її тілом. Тому вбудованими доцільно оголошувати невеликі функції, які викликаються багатократно і мають критичний вплив на виконання програми.
В останньому прикладі inline – функцією можна оголосити функцію array_swap, яка виконує просту операцію і викликається багато разів. Оголошення функції буде виглядати таким чином:
inline void array_swap( int * a, int * b ) {
int t = *a;
*a = *b;
*b = t;
}
Використання вбудованих функції дає змогу дотримуватись принципів функціональної структуризації програми і одночасно забезпечити максимальну швидкодію реалізації таких функцій. Виграш у часі виконання inline – функцій порівняно з звичайними функціями досягається завдяки тому, що вбудований код не вимагає передавання параметрів і значення функції, а також збереження в стеку поточних станів системних регістрів. Але inline не є обов’язковою директивою, тобто компілятор може не вбудовувати дану функцію, а використати інші засоби оптимізації швидкодії або взагалі проігнорувати вказівку inline.
Для прикладу наведемо inline – функцію, що обчислює значення квадрату заданого аргументу дійсного типу:
inline int sqr( int x ) {
return x * x;
}
Якщо звернутися до цієї функції для обчислення виразу
sqr( a + b ) / ( sqr( a ) + sqr( b ) )
то компілятор може поміняти виклики функцій на вбудування її тіла, тобто вираз набуде вигляду
( a + b ) * ( a + b ) / ( a * a + b * b )