R.8.3 Определения функций

R.8.3 Определения функций

Определения функций имеют вид

определение-функции:

 спецификации-описания opt описатель инициализатор-ctor тело-функции

тело-функции:

 составной-оператор

Конструкция описатель из определения-функции должна содержать описатель вида

D1 ( список-описаний-параметров ) список-спецификаций-cv opt

в соответствии с определениями из §R.8.2.5.

Формальные параметры относятся к области видимости самого большого блока тела-функции.

Приведем пример полного определения функции.

int max(int a, int b, int c)

{

 int m = (a › b) ? a : b;

 return (m › c) ? m : c;

}

Здесь int представляет спецификации-описания, max(int a, int b, int c) - описатель, а {/*… */} - тело-функции.

Конструкция инициализатор-ctor используется только в конструкторах, см. §R.9.3.1 и §R.12.6.

Конструкция список-спецификаций-cv может участвовать: в описании нестатической функции-члена, в определении нестатической функции-члена или в описании указателя на функцию-член, см. §R.9.3.1. Она относится к типу функции.

Отметим, что неиспользуемым формальным параметрам имена можно не давать, например,

void print(int a, int)

{

 printf("a = %d ",a);

}