Учись программированию на C++ Builder бесплатно!

Реализация программы как набора функций хороша с точки зрения разработки программного обеспечения, но вызовы функций приводят к накладным расходам во время выполнения. В С++ для снижения этих накладных расходов на вызовы функций, особенно небольших функций, предусмотрены встраиваемые (inline) функции. Спецификация inline перед указанием типа результата в объявлении функции «советует» компилятору сгенерировать копию кода функции в соответствующем месте, чтобы избежать вызова этой функции. Это эквивалентно объявлению соответствующего макроса. В результате получается множество копий кода функции, вставленных в программу, вместо единственной копии, которой передается управление при каждом вызове функции.

Компилятор может игнорировать спецификацию inline, что обычно и делает для всех функций, кроме самых небольших.

Любые изменения функции inline могут потребовать перекомпиляцию всех потребителей этой функции. Это может оказаться существенным моментом для развития и поддержки некоторых программ.

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

Пусть, например, во многих частях программы приходится вычислять длину окружности, заданной своим радиусом R. Тогда можно оформить эти вычисления, определив встраиваемую функцию:

inline double Circ(double R)
{
return 6.28318*R;
}

Обращение в любом месте программы вида Cire(2) приведет к встраиванию в соответствующем месте кода 6.28318*2 (если компилятор сочтет это целесообразным).


Поиск по сайту