Include guards in cpp sind überflüssig. Du kompilierst doch die cpp-Dateien alle (zusammen oder einzeln). Diese includen header und header includen wiederum header (aber keine cpp). Es kann also vorkommen, dass du bestimmte Header mehrfach über verschiedene Wege includest - aber du willst den Code ja jeweils nur 1x haben. Da cpp nicht includet werden, besteht das Problem dort nicht. Schau die auch https://de.wikipedia.org/wiki/Include-Guard an und lies auch über die One-Definition-Rule nach.