Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Встроенные функции (inline-функции)



Использование 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...