Внешние объявления в С++
Любая функция автоматически видна во всех модулях программы. Если требуется ограничить область действия функции файлом, в котором она описана, используется модификатор static.
Для того чтобы сделать доступной в нескольких модулях переменную или константу, необходимо:
• определить ее ровно в одном модуле как глобальную;
• в других модулях объявить ее как внешнюю с помощью модификатора extern.
Другой способ — поместить это объявление в заголовочный файл и включить его в нужные модули. Все описания одной и той же переменной должны быть согласованы.
Пример описания двух глобальных переменных в файлах one.срр и two.cpp с помощью заголовочного файла my_header. h:
Обе переменные доступны в файлах оnе.срр и two.cpp.
Если переменная описана как static, область ее действия ограничивается фай-лом, в котором она описана. При описании типа следует придерживаться правила одного определения, то есть тип, используемый в программе, должен быть определен ровно один раз.
Важно. Как правило, это делается в заголовочном файле, который затем подключается к модулям, использующим этот тип. Нарушение этого правила приводит к ошибкам, которые трудно обнаружить, поскольку компиляторы, как правило, не обладают возможностью сличать определения одного и того же типа в различных файлах.
Для того чтобы сделать доступной в нескольких модулях переменную или константу, необходимо:
• определить ее ровно в одном модуле как глобальную;
• в других модулях объявить ее как внешнюю с помощью модификатора extern.
Другой способ — поместить это объявление в заголовочный файл и включить его в нужные модули. Все описания одной и той же переменной должны быть согласованы.
Пример описания двух глобальных переменных в файлах one.срр и two.cpp с помощью заголовочного файла my_header. h:
// my_header.h - внешние объявления extern int а; extern double b; // // оnе.срр #include "my_header.h" int a; // // two.cpp #include "my_header.h" double b;
Если переменная описана как static, область ее действия ограничивается фай-лом, в котором она описана. При описании типа следует придерживаться правила одного определения, то есть тип, используемый в программе, должен быть определен ровно один раз.
Важно. Как правило, это делается в заголовочном файле, который затем подключается к модулям, использующим этот тип. Нарушение этого правила приводит к ошибкам, которые трудно обнаружить, поскольку компиляторы, как правило, не обладают возможностью сличать определения одного и того же типа в различных файлах.