Несколько библиотек определений и только заголовков

У меня есть программа на языке C с несколькими файлами c и h. Я решил сделать одну часть программы «только для заголовка», поэтому переместил код с c на h. Теперь у меня проблемы с определением кратных, и я понятия не имею, почему. например: [

main.c includes utils.h
vector.c includes utils.h

] Я переместил все, что есть в utils.c, в utils.h (и, конечно же, удалил utils.c из проекта). utils.h начинается с

#ifndef UTILS_H_
#define UTILS_H_

// and end with:
#endif

Чтобы убедиться, что моя защита уникальна, я попытался изменить ее (например: UTILS718171_H_), но это не сработало.

Тем не менее, компилятор жалуется:

/tmp/ccOE6i1l.o: In function `compare_int':
ivector.c:(.text+0x0): multiple definition of `compare_int'
/tmp/ccwjCVGi.o:main.c:(.text+0x660): first defined here
/tmp/ccOE6i1l.o: In function `compare_int2':
ivector.c:(.text+0x20): multiple definition of `compare_int2'
/tmp/ccwjCVGi.o:main.c:(.text+0x6e0): first defined here
/tmp/ccOE6i1l.o: In function `matrix_alloc':
ivector.c:(.text+0x40): multiple definition of `matrix_alloc'
/tmp/ccwjCVGi.o:main.c:(.text+0x0): first defined here
...

Проблема может быть примерно такой: все файлы c компилируются и получают свою собственную версию кода, а затем при компоновке это вызывает проблему, но я, честно говоря, не знаю, как решить эту проблему. проблема.

15
задан manlio 24 April 2014 в 10:55
поделиться