@Anther
Начинающий

Include/header guards зачем?

Зачем нужны header guards если в заголовочных файлах мы пишем только объявление функции? То есть зачем нужно ограничивать множественное объявление, если это почти не влияет на программу?

#ifndef SOME_UNIQUE_NAME_HERE
#define SOME_UNIQUE_NAME_HERE
 
// Здесь только заголовок. Без определения. 
 
#endif
  • Вопрос задан
  • 67 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
http://dilbert.com/strip/1998-08-24
Зачем нужны header guards если в заголовочных файлах мы пишем только объявление функции?

Не всегда мы пишем только объявления. Иногда мы там пишем определения, например определяем структуры, или псевдонимы типов (typedef). Повторное определение таких вещей -- ошибка. Тут ты можешь сказать: "но я подключаю хедер в каждый исходник только один раз". Да, пока проект простой можно это отследить. Но когда одни хедеры начинают подключать другие хедеры это становится делать сложнее. header guards упрощают развитие проекта.
Иногда между хедерами бывают циклические зависимости, header guards позволяют разорвать цикл.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@vabka
Токсичный
Чтобы случайно файл не был заинклюден дважды.
В общем случае это может привести к ошибке компиляции.
Ответ написан
hottabxp
@hottabxp
Миллиардер. Честно, 100 пистонов!
Вот отличное объяснение - Header guards
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Flipper Devices Inc. Москва
от 100 000 ₽
Eltex Новосибирск
от 80 000 ₽
4Taps Mobile Тольятти
от 120 000 до 190 000 ₽
26 февр. 2021, в 05:09
3000 руб./за проект
26 февр. 2021, в 04:16
3000 руб./за проект
26 февр. 2021, в 01:40
1000 руб./за проект