Нет, это не так. Глобальные переменные должны быть объявлены в одном модуле
(как у меня).
А другие модули должны получить к ним доступ
посредством "extern".
Что я и делаю.
А вы зациклились на каком-то странном варианте исходного текста
на который компилятор и должен ругаться. Он это и делает.
---
Есть ещё вторая составляющая - чем более компилер новый, тем
более придирчиво он рассматривает исходники на предмет ошибок.
Поэтому старый проект с новым компилятором не всегда собирается без редакции.
---
И главная беда использования глобальных переменных в том, что
можно сделать так:
модуль main.c:
int a;
int b;
int c;
модуль mod1.c:
extern int a;
extern char b;
extern int c;
Если модулей и переменных много и переменные бессистемно рассыпаны по проекту
такую ошибку, возможно, никогда не найдёшь. Поэтому лучше все глобальные
переменные (если уж они есть) сосредоточить в одном файле.