Two common questions about include guards:
FIRST QUESTION:
Why aren\'t include guards protecting my header files from mutua
First of all you should be 100% sure that you have no duplicates in "include guards".
With this command
grep -rh "#ifndef" * 2>&1 | uniq -c | sort -rn | awk '{print $1 " " $3}' | grep -v "^1\ "
you will 1) highlight all include guards, get unique row with counter per include name, sort the results, print only counter and include name and remove the ones that are really unique.
HINT: this is equivalent to get the list of duplicated include names