Это отличается от обычной путаницы из-за дублированных ошибок символов ...: -)
Я работаю над некоторым устаревшим кодом Mac в проекте XCode, который имеет тот же глобальный «след», определенный в нескольких различных исходных файлах, например:
- File1.c: трассировка SInt32;
- File2.c: логическая трассировка;
и т.д.. Ясно, что первоначальный автор имел в виду, что они имеют специфичную для файла область, но просто пренебрегали префиксом любой из этих строк "static". Это хорошо, достаточно легко исправить.
Но я шокирован, что компоновщик не помечает их! Мне кажется, что компоновщик Xcode (я предполагаю, что gnu ld) генерирует только дублированные предупреждения или ошибки символов для функций, которые связаны с сегментом кода, но не глобальные переменные, которые связаны с сегментом данных. Вместо этого он молча объединяет их, что вызывает ошибки.
Итак ... как мне убедить Xcode выдавать ошибки ссылок для дублирующихся глобальных переменных? Или получить эту информацию другим способом, который может быть обычной частью моей сборки?