У меня есть два файла .c, которые содержат одинаковые методы (с одинаковыми именами и параметрами), но реализованы по-разному для обеспечения подхода, независимого от реализации.Как я могу сгенерировать один тестовый файл и скомпилировать его с обеими реализациями, не получая ошибок развертывания?
Графически объяснено:
file_one.c (те же имена методов и параметры file_two.c)
file_two.c
file_test.c
Я хочу:
compile -> file_test.c file_one.c
compile -> file_test.c file_two.c
в make-файле без создания двух копий file_test.c
CC = gcc
CFLAGS = -c -Wall
все: test_matrice test_lista
test_matrice: grafi_test.c grafi_matrice.o
$(CC) grafi_test.c grafi_matrice.o -o test_matrice
test_lista: grafi_test.c grafi_liste.o
$(CC) grafi_test.c grafi_liste.o -o test_lista
* 1031grafi_matrice.o: grafi_matrice.c grafi_matrice.h
$(CC) $(CFLAGS) grafi_matrice.c
grafi_liste.o: grafi_liste.c grafi_liste.h
$(CC) $(CFLAGS) grafi_liste.c
clean: rm -rf * .o test_matrice 1038 test_matrice test*
Я получаю эту ошибку:
gcc grafi_test.c grafi_matrice.o -o test_matrice
grafi_test.c: 4: ошибка: expected '=', ',', ';', 'asm' или ' атрибут ' перед '*' токеном
grafi_test.c: в функции 'main':
grafi_test.c: 21: ошибка: «граф» необъявлен (первое использование в этой функции)
grafi_test.c: 21: ошибка: (каждый необъявленный идентификатор сообщается только один раз
grafi_test.c: 21: ошибка: для каждой функции, в которой она появляется.)
grafi_test.c: 21: ошибка: «G» необъявлено (первое использование в этой функции)
make: * [test_matrice] Ошибка 1
Спасибо, Джорджо