Программа
на C++ может состоять из файлов, содержащих описания типов, функций,
переменных и констант. Чтобы имя можно было использовать в разных
исходных файлах для ссылки на один и тот же объект, оно должно быть
описано как внешнее [14].
Например:
extern double func(double);
extern instream cin;
Самый
обычный способ обеспечить согласованность исходных файлов – это поместить
такие описания в отдельные файлы, называемые заголовочными (или хэдер)
файлами, а затем включить, то есть скопировать эти заголовочные файлы
во все файлы, где нужны эти описания.
Например,
если описание func хранится в заголовочном файле для функций sw.h,
и вы хотите вызвать эту функцию и передать ей число 4, можно написать:
#include <sw.h>
//...
x = func (4);
Поскольку
обычные заголовочные файлы включаются во многие исходные файлы, они
не содержат описаний, которые не должны повторяться. Заголовочный
файл обеспечивает интерфейс между отдельно компилируемыми частями
программы.
В команде
включения include имя файла, заключённое в угловые скобки, относится
к файлу с этим именем в стандартном каталоге (например, /user), а
на файлы, находящиеся в каких-либо других местах, ссылаются с помощью
имен, заключенных в двойные кавычки.
Например:
#include
"math1.h"
#include "/user/math2.h"
включит math1.h из текущего пользовательского каталога, а math2.h –
из каталога /user.
Приведём
пример программы, в котором строка определяется в одном файле, а её
печать производится в другом.
Файл header.h определяет необходимые типы:
extern char* prog_name;
extern void f();
В файле
prog.cpp находится главная программа:
#include "header.h"
char* prog_name = "Да здравствует СГГА!";
main()
{ f(); }
Функция
f печатает строку:
#include <iostream.h>
#include "header.h"
void f()
{ cout << prog_name << "\n"; }