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