Директива #include вставляет содержимое одного (включаемого) файла в другой (исходный) файл. Это дает возможность организовать определения констант и макро в отдельном файле, а затем вставить его директивой #include в любой другой файл. Вставка файлов очень удобна для объединения объявлений внешних переменных и сложных типов данных. Нужно определить и задать имена этих типов только один раз в созданный для этих целей файл.
Директивой #include реализуется принцип информационной локализованности, который состоит в том, что вся информация о структуре данных, о прототипах функций, констант и т.д. сосредотачивается («упрятывается») в отдельном файле. Доступ к этой информации осуществляется только через этот файл (такие файлы имеют расширение *.h), который вставляется в исходный директивой #include.
Директива #include информирует препроцессор о том, что содержание файла с заданным именем следует обрабатывать так, как будто он присутствует в исходном файле в месте расположения этой директивы. Включаемый файл также может содержать директивы препроцессора. Препроцессор выполняет директивы во включаемом файле, а затем продолжает обработку текста исходного файла. Формат директивы следующий:
#include <имя_включаемого_файла>
где "имя_включаемого_файла" – это имя файла, которому может предшествовать описание пути в каталог, где расположен включаемый файл.
Если путь в каталог не указан, то препроцессор использует концепцию «стандартной» директории (обычно это каталог INCLUDE интегрированной среды С++). Препроцессор останавливает поиск сразу же после обнаружения файла с заданным именем. Вместо угловых скобок (< >) можно использовать кавычки (" "), тогда препроцессор будет искать файл по указанному пути или в текущем каталоге.