Попытка скомпилировать мою программу, которая имеет два исходных файла с именами hencode.c
и hdecode.c
. Файл htable.c
содержит все функции, которые оба файла используют, а файл htable.h
содержит прототипы.
Обратите внимание, что ваша программа состоит из трех исходных файлов, а не двух. При связывании финальной программы вам необходимо иметь символы, определенные в htable.c
. Другими словами, #include
-ing-файл не компилируется автоматически и не связывает его в конечной программе.
Мой hencode
файл компилируется правильно, однако мой hdecode
файл - нет. Я использую эту команду для компиляции файла: gcc -o hdecode -Wall -ansi -pedantic hdecode.c
Это неясно - вы используете Makefile или компилируете вручную? Если это последнее, вам нужно передать оба исходных файла (или объектные файлы, если они были скомпилированы ранее):
# Note the added htable.c
gcc -o hdecode -Wall -ansi -pedantic htable.c hdecode.c
Наконец, также обратите внимание, что Makefile можно упростить:
CC = gcc
CFLAGS = -Wall -ansi -pedantic -g -std=c99
all: hdecode hencode
hdecode: htable.o hdecode.o
hencode: htable.o hencode.o
hdecode.o: hdecode.c
hencode.o: hencode.c
htable.o: htable.c
clean:
@rm *.o hdecode hencode