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

Ниже приведен заголовок функции, не возвращающей никакого значения:

void SPrint(AnsiString S)

Она принимает один параметр типа строки и, например, отображает его в ка-
ком-нибудь окне приложения.

Если функция не принимает никаких параметров, то скобки или оставляются
пустыми, или в них записывается ключевое слово void. Например:

void Fl(void)
ИЛИ

void Fl ()

Хороший стиль программирования

Всегда указывайте void в списке параметров, если функция не получает никаких парамет-
ров Это делает программу более переносимой.

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

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

Как правило (хотя формально не обязательно), помимо описания функции в
текст программы включается также прототип функции — ее предварительное
объявление. Прототип представляет собой тот же заголовок функции, но с точкой
с запятой «;» в конце. Кроме того, в прототипе можно не указывать имена пара-
метров. Если вы все-таки указываете имена, то их областью действия является то-
лько этот прототип функции. Вы можете использовать те же идентификаторы в
любом месте программы в любом качестве. Таким образом, указание имен пара-
метров в прототипе обычно преследует только одну цель — документирование про-
граммы, напоминание вам или сопровождающему программу человеку, какой па-
раметр что именно обозначает.

Примеры прототипов приведенных выше заголовков функций:

double FSumfdouble XI,double X2, int А);

void SPrint(AnsiString S);

void Fl(void) ;

double FSumfdouble, double, int);

void SPrint(AnsiString) ;

void Fl () ;

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