Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Использование inline-функций может ускорить выполнение программы.
Обработка вызова обычной функции на этапе выполнения программы происходит следующим образом:
– приостанавливается выполнение вызывающей функции и запоминается адрес возврата;
– в стеке выделяется место под параметры вызываемой функции, значения аргументов передаются параметрам, и функция выполняет свою работу;
– если функция является типизированной, то создается временная переменная для хранения возвращаемого значения;
– когда значение возвращено, эта временная переменная уничтожается.
Все это требует времени на выполнение. Ускорение выполнения программы за счет использования inline-функций происходит потому, что на этапе компиляции вызов функции заменяется копией ее тела, а параметры заменяются аргументами, поэтому на этапе выполнения функция на самом деле не вызывается. Однако в тех случаях, когда размер inline-функции достаточно большой и ее вызовы встречаются слишком часто, общий объем программы может сильно увеличиться. Поэтому в качестве inline-функций используются очень маленькие функции, а большие реализуются обычным способом.
Для создания inline-функций используется модификатор inline, который предшествует объявлению функции. Например, создадим встроенную функцию для вычисления квадрата числа:
inline int Sqr(int X)
{ return X * X; }
//---------------------------------------void main()
{
int X = 5;
int Y = Sqr(X); // подстановка Y = X * X;
printf("\n\n Квадрат %lf равен %lf", X, Y);
}
Ключевое слово inline не является командой, оно представляет лишь запрос к компилятору сгенерировать подставляемый код, который не обязательно будет удовлетворен. Например, inline-функции не могут быть рекурсивными или содержать статические локальные переменные. Некоторые компиляторы не подставляют функции, содержащие циклы, операторы switch и goto. Если какое-либо из ограничений нарушено, то компилятор генерирует обычную функцию.
Дата публикования: 2015-07-22; Прочитано: 260 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!