Вот сделка. У меня было две одинаковые глобальные переменные в двух разных файлах .c, они не были объявлены как extern. Таким образом, каждый файл .c должен видеть свою собственную переменную, верно?
Но я получил довольно странное поведение, как будто один файл считывал переменную других файлов (после их объединения). Похоже, что добавление «статического» квалификатора к определениям обеих переменных решило эту проблему.
Так что же мне на самом деле интересно, что именно там произошло без квалификатора «static»?