Well no, not really...
If A includes B, then B includes A, then A will again include B, thus creating a circular reference. The compiler will complain. With header guards, I believe that Header B will see an empty A, thus the compiler complains that all the declarations in A are undefined (because your headerguards removes the file contents).
That's the scenario I was refering to