Предположим, у меня есть a.h
, который включает в себя следующее:Препроцессор #ifndef
<stdbool.h>
<stddef.h>
<stdin.h>
Предположим, у меня есть b.h
, который также включает в себя <stdbool.h>
. Если a.h
содержит инструкцию определения препроцессора #ifndef
, а b.h
- нет. Будет ли a.h
включить только то, что не было включено в b.h
? Поэтому, когда b.h
включает a.h
, будет a.h
включать stddef.h
и stein.h
и не включать повторно stdbool.h
или это функции определения препроцессора, используемые только для проверки того, переопределен ли этот весь класс, а не какие-то конкретные функции внутри него?
EDIT:
Кроме того, предположим, что b.h
включает другой заголовочный файл, который включает в себя stdbool.h
-Вот делает b.h
есть stdbool.h
как от этого класса и a.h
. Это вызовет ошибки?
Определения в заголовках будут возникать ошибки связывания, если вы используете один и тот же заголовок из нескольких файлов, поэтому не делайте этого. –