Why aren’t my include guards preventing recursive inclusion and multiple symbol definitions?

FIRST QUESTION: Why aren’t include guards protecting my header files from mutual, recursive inclusion? They are. What they are not helping with is dependencies between the definitions of data structures in mutually-including headers. To see what this means, let’s start with a basic scenario and see why include guards do help with mutual inclusions. Suppose … Read more