L'inghippo sta nel fatto che, essendo il file incluso nel progetto e non marcato specificamente per la non-compilazione (i .cpp vengono compilati di default), l'IDE dice al compilatore anche di compilarlo singolarmente, e, ovviamente, un file del genere se compilato da solo non può che generare errori (ci sono infatti delle istruzioni al di fuori di un contesto di funzione).
Quello che hai aggiunto è un include guard, ma non c'entra niente, serve per evitare che uno stesso header venga incluso più volte nello stesso file.
La soluzione consiste nel marcare quel file come non da compilare o nel rimuoverlo dal progetto. Come già detto, comunque, è considerata pessima pratica includere dei .cpp, specie all'interno di funzioni.