В одном из предыдущих уроков о предварительных объявлениях мы говорили, что у идентификатора может быть только одно определение. А что будет, если записать два определения одной переменной? А как вы думаете? Ошибка будет, ошибка компиляции. И называется она дублированием определений.
Вот чтобы избежать возникновения подобных ошибок и были созданы header guards (в переводе - “охранники заголовков”). Это директивы условной компиляции, которые выглядят следующим образом:
#ifndef SOME_UNIQUE_NAME_HERE
#define SOME_UNIQUE_NAME_HERE
// ваши объявления и определения здесь #endif
Если вы, работая в IDE, подключите этот заголовок в свой проект, то первым делом файл проверит, был ли ранее определен идентификатор SOME_UNIQUE_NAME_HERE. Если поиски не дадут результатов, то мы сами #define (определяем) SOME_UNIQUE_NAME_HERE, а затем пишем основной код заголовочного файла. А вот если в проекте уже существует (подключен раньше) этот заголовочный файл, то получится, что SOME_UNIQUE_NAME_HERE уже был определен. Таким образом, при повторном подключении заголовочного файла, всё его содержимое будет игнорироваться.
Во всех заголовках должны быть header guards. Вместо SOME_UNIQUE_NAME_HERE вы можете использовать и любой другой идентификатор, который только захотите, но принято использовать в качестве идентификатора название заголовочного файла с приставкой _H. Например, в math.h…
![]()
Это интересно
0
|
|||
Последние откомментированные темы: