Справочные данные по языку C++_____________________________629

va_start(ap, mess);

while ((arg = va arg(ap,int)) != 0)
(
i++;

A += arg;

)
Forml->Labell->Caption = mess + "N = " +IntToStr(i) +

", среднее = "+FloatToStr(A/i);

va end(ap) ;

)

Вызов функции может быть, например, таким:

average("Результаты экзамена: ",4,2,3,5,4,0);

В результате функция выдаст в метку Labell сообщение:

Результаты экзамена: N = 5, среднее =3,6

Функцию average можно было бы организовать иначе, не вводя специальную
конечную метку в список (в приведенном примере — 0), а предваряя список аргу-
ментов параметром N, указывающим размер списка:

void average(AnsiString mess.int N,...)
(

double A = 0;

va_list ap;

va start(ap, N) ;

foriint i = 0; i < N; i++)
A += va_arg(ap,int);

Forml->Labell->Caption = mess + "N = " +IntToStr(N) +

", среднее = "+FloatToStr(A/N) ;

va_end(ap) ;

I

Вызов функции может быть, например, таким:

average("Результаты экзамена: ",5,4,2,3,5,4);

11.5.6 Встраиваемые функции inline

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

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

Предупреждение

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