Отправляет email-рассылки с помощью сервиса Sendsay

Уроки по C/C++

  Все выпуски  

Уроки по C/C++


Информационный Канал Subscribe.Ru

C/C++. Уроки с сайта http://progs.biz

Рассылка №8

C/C++. Урок 12. Встраиваемые (inline) функции.

Полные версии уроков (с картинками) можно найти по адресам:
Урок 12. Встраиваемые (inline) функции.

А. Корера и др. Visual C++.NET: Пособие для разработчиков C++

Заказать на Озоне

Подробнее

Рассылки сайта progs.biz через subscribe.ru
Delphi. Уроки
Delphi. Уроки. Уровень - от начинающего до профи. Каждый урок рассчитан на 15 - 20 минут. Темы - библиотека VCL, создание компонентов, FAQ, работа с базами данных (InterBase и др).

C/C++. Урок 12. Встраиваемые (inline) функции

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

Встраиваемые (inline) функции как раз и решают эту проблему. Оформляется такая функция как и обычная, только с ключевым словом inline. Но при компиляции тело функции подставляется во все места ее вызова. Минусы и плюсы тут меняются местами по сравнению с обычной функцией: вызов такой функции идет быстрее, а место exe-файл занимает больше. Вот пример:

 ...
//Встраиваемая функция.
inline int f(int a, int b)
{
    return a*b;
}
void main()
{
    //Вызов функции.
    cout<<f(23, 45)<<"\n";
    cout<<f(-23, 77)<<"\n";
}

Надо сказать, что разные компиляторы по-разному работают с inline-функциями. Если компилятор не может сделать функцию встраиваемой, то он делает ее обычной. Например, такое может случится с рекурсивной функцией.

Наверх

Copyright Алексеев Игорь, 2002-2003
Copyright сайт progs.biz, 2002-2003
Распространение материалов без разрешения владельцев авторских прав запрещено.


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное