Есть более чистый способ с одним файлом заголовка, который проще в обслуживании. В заголовке с префиксом глобальных переменных каждое объявление с ключевым словом (я использую общий), тогда только в один исходный файл включите его следующим образом
#define common
#include "globals.h"
#undef common
и любые другие исходные файлы, подобные этому
#define common extern
#include "globals.h"
#undef common
Просто убедитесь, что вы не инициализируете какие-либо переменные в файле globals.h, иначе компоновщик все равно будет жаловаться, поскольку инициализированная переменная не рассматривается как внешняя даже с ключевым словом extern. Файл global.h выглядит примерно так
#pragma once
common int globala;
common int globalb;
etc.
похоже, работает для любого типа объявления. Разумеется, не используйте общее ключевое слово в #define.