Кстати да. Обьясните за такую штуку. Вот такое точно нельзя писать в хедерах, иначе это полностью может изменить семантику кода в который этот самый инклюд залетит. А в обычных файликах .cpp почему так не принято? Они же все отдельно компилируются?
ну, есть некоторые оговорки... поищи юнит билды или как они там называются