Search code examples
cheader-filesifndef

Preprocessor #ifndef


Assume I have a.h which includes the following:

<stdbool.h>
<stddef.h>
<stdin.h>

Assume I also have b.h which also includes <stdbool.h>. If a.h has the #ifndef preprocessor definition statement in it and b.h doesn't. Will a.h include only what hasn't been included in b.h? So when b.h includes a.h, will a.h include stddef.h and stein.h and not re-include stdbool.h or are those preprocessor definition functions only used to see whether this whole class is redefined, and not specific functions within it?

EDIT:

Also, assume b.h includes another header file which includes stdbool.h -that makes b.h have stdbool.h both from that class and a.h. Will that cause errors?


Solution

  • All C standard headers must be made such that they can be included several times and in any order:

    Standard headers may be included in any order; each may be included more than once in a given scope, with no effect different from being included only once