logo
ответы

83. Прототипы функций

Прототипом функции называется заголовок функции (со списком параметров), заканчивающийся символом ;. Например:

double F (int P1, double P2 ); // Это прототип функции F

double F (int P1, double P2 ) // А это сама функция F

{

return P1 * P2;

}

В прототипе функции допускается не указывать имена параметров (типы параметров должны быть указаны обязательно). Например, прототип той же функции можно записать так:

double F (int, double); // И это прототип функции F

Назначение прототипов – это опережающее описание функции, определяющее правила вызова функции.

Обычно прототипы функций используются в заголовочных файлах.

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

void A ()

{

……

B ();

……

}

void B ()

{

……

A ();

……

}

Это пример, так называемого, “перекрестного” вызова функций (функция А вызывает функцию В, а функция В вызывает функцию А). В этом случае конфликт может быть разрешен с помощью использования прототипа функции B:

void B ();

void A ()

{

……

B ();

……

}

void B ()

{

……

A ();

……

}

Теперь функция А “знает”, что представляет собой функция В и как ее вызвать.