Код процедуры объявленной inline (встроенная) копируются без изменения в то место, где она должна вызываться. Это приводит к тому, что нет фактического вызова процедуры, просто её код копируется туда, где она необходима, это обеспечивает более быструю скорость выполнения, при многократном использовании функции (или процедуры). Очевидно, что встраивание больших функций не имеет смысла.
По умолчанию inline процедуры не допускается. Код inline можно использовать только когда есть переключатель командной строки -Si или директива {$inline on}.
Примечание:
1.inline только указание компилятору. Это не означает что все inline вызовы встраиваются автоматически; иногда компилятор может решить, что функция просто не может быть встроена, или что конкретный вызов функции не может быть встроен. Если это так, то компилятор выдаст предупреждение. 2.В старых версиях Free Pascal, встроенный код не мог быть экспортирован из модуля. Это означало, что при вызове inline процедуры из другого модуля, выполниться обычный вызов процедуры. Процедуры inline действительно встраиваемы только внутри модуля. Начиная с версии 2.0.2, inline работает и из модуля. 3.Рекурсия во встроенных функциях не допускается. т.е. не допускается встроенная функция, вызывающая сама себя. |
|