Предположим, у меня есть a.h
, что включает в себя следующее:
<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
, или эти функции определения препроцессора используются только для того, чтобы увидеть, переопределен ли весь этот класс, и не являются ли они конкретнымифункции внутри него?
РЕДАКТИРОВАТЬ:
Кроме того, предположим, что b.h
включает в себя еще один заголовочный файл, который включает stdbool.h
- что делает b.h
иметь stdbool.h
как из этого класса, так и a.h
.Это приведет к ошибкам?