inline функции

встаиваемые (inline) функции в неизменном виде вставляються телом в место своего вызова.

Причина использования inline-функции заключается в их эффективности. Всякий раз, когда вы­зывается функция, необходимо выполнить серию инструкций для формирования вызова функции, вставки аргументов в стек и возврата значения из функции. В некоторых случаях для этого прихо­дится использовать много тактов центрального процессора. При использовании inline-функции нет необходимости в таких дополнительных действиях и скорость выполнения программы возрастает.

Как в С так и в С++ ключевое слово inline не гарантирует встраивания функции в вызывающий код, а является лишь пожеланием компилятору, что данная функция должна вызываться настолько быстро, насколько возможно. Поэтому осязаемым эффектом ключевого слова inline является только то, как оно влияет на правила объявления и определения функций.

Однако в тех случаях, когда размер inline-функции достаточно большой, общий объем программы также возрастает. Поэтому в качестве inline-функции обычно используются очень маленькие функ­ции. Большие функции реализуются обычным способом.

Если рассматривать функции с внутренним связыванием, т.е. функции, объявленные как static inline, то разницы между C и С++ фактически нет. Однако как только речь заходит о функциях с внешним связыванием, то разница между языками довольна значительна.