634_____________________________________________Глава 11 1

(см. раздел 11.5.1). Прототипы функций не требуют имен в списке параметров —
требуются только типы. Если в списке параметров прототипа функции использует-
ся имя, компилятор это имя игнорирует. Идентификаторы, используемые в прото-
типе функции, можно повторно использовать где угодно в программе, не опасаясь
двусмысленности.

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

Если в модуле, описывающем функцию, ее объявление записано в заголовоч-
ном файле, то в другом модуле можно получить к ней доступ так, как описано
выше, а можно и проще — включить директивой #include (см. раздел 11.2.1) этот
заголовочный файл.                                                     ,

Полный список правил, определяющих видимость переменных и функций, вы
можете найти в главе 1 в разделе 1.6.5.4.

11.6.2 Явное определение доступа с помощью объявлений
namespace и using

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

Таким инструментом является объявление области видимости имен ключе-
вым словом namespace и последующее объявление использования функций и пе-
ременных из той или иной области ключевым словом using.

Синтаксис объявления области видимости:

namespace имя области
(

объявления типов, переменных и функций
t

Например:

namespace A(

int i = 1;

void Fl(int i)

(
Forml->Labell->Caption = "Область A: i = "•+ IntToStr(i);

>
)
namespace B(

int i = 2;

void Fl(int i)

(
Forml->Labell->Caption = "Область В: i = " + IntToStr(i);

>
}

Приведенные операторы объявляют две области видимости с именами А и В. В
обеих областях объявлены переменные i и функции Fl.