Отправленная вами ошибка указывает на существование vec.c
и a.c
(при условии, что вы не пытаетесь связать в уже существующих объектных файлах), оба из которых определяют INIT_SETA
. Это ошибка компоновщика, а не ошибка компиляции.
cl main.c
только компилирует файл в объектный файл, никаких ссылок не происходит. Если вы попытаетесь связать все ваши объектные файлы вместе, используя (link.exe) из командной строки, вы все равно получите ту же ошибку. Найдите в двух файлах, перечисленных в сообщении об ошибке, несколько определений символа INIT_SETA
.
Одним из возможных решений может быть объявление его extern
в одном из двух файлов с его использованием, тогда эти два файла будут использовать один и тот же экземпляр.
Если оба файла должны иметь личные копии, вы должны удалить любые объявления extern INIT_SETA
, появляющиеся в заголовочных файлах (и добавить static
к определениям в каждом исходном файле).