Warum sollte man Wachen einbeziehen?

Wachen einschließen, wie definiertHier, werden verwendet, um zu verhindern, dass derselbe Code beim Kompilieren zweimal geladen wird.

Warum kann mein Compiler (GCC) nicht erkennen, dass er denselben Code zweimal lädt und ein vernünftiges Standardverhalten aufweist?