Как разбить файл C на несколько файлов
Я делаю проект для класса и нуждаюсь в помощи, разбивая мою программу на отдельные части. Мой учитель дал нам подсказку, в которой указано, какие файлы будут делать, но он не сказал нам, как писать файлы заголовков. Из того, что я узнал в Интернете, я поместил прототипы функций из каждого файла.c в свой собственный файл.h и включил их с заголовком "header.h" в файлы.c. Тем не менее, я получаю ошибки компиляции, такие как
course1.c:20:3: warning: implicit declaration of function ‘initialize’ [-Wimplicit-function-declaration]
initialize(courses, subjects, CRN);
^
vector1.c:14:6: error: conflicting types for ‘resize’
void resize(char ***courses, char***subjects, int **CRN) {
^
In file included from vector1.c:2:0:
vector.h:11:6: note: previous declaration of ‘resize’ was here
void resize(char ***subjects, char ***courses, int **CRNs, int *size);
^
vector1.c:39:6: error: conflicting types for ‘deallocate’
void deallocate(char **courses, char**subjects, int *CRN) {
^
In file included from vector1.c:2:0:
vector.h:12:6: note: previous declaration of ‘deallocate’ was here
void deallocate(char **subjects, char **courses, int *CRNs, int size);
Я почти уверен, что мои файлы имеют правильный синтаксис, потому что я скомпилировал их отдельно в файлы.o, и они работали нормально. Может кто-нибудь, пожалуйста, в общем заявить, как разбить программу на отдельные файлы? Я думаю, что я, очевидно, делаю это неправильно. Одна ошибка, которую дает мне компилятор, заключается в том, что функция не определена, когда она четко определена в заголовочном файле, который я включил.
1 ответ
course1.c:20:3: warning: implicit declaration of function ‘initialize’ [-Wimplicit- function-declaration]
initialize(courses, subjects, CRN);
Это означает, что вам нужно объявить это как
int initialize(courses, subjects, CRN);
или же
void initialize(courses, subjects, CRN);
В старом стиле C, если вы не укажете, компилятор будет рассматривать его как возвращение int
,
vector1.c:14:6: error: conflicting types for ‘resize’
void resize(char ***courses, char***subjects, int **CRN) {
^
In file included from vector1.c:2:0:
vector.h:11:6: note: previous declaration of ‘resize’ was here
void resize(char ***subjects, char ***courses, int **CRNs, int *size);
^
Это означает, что вы определили функцию resize
дважды в разных местах и прототип отличается (у них разное количество аргументов). Это то же самое для функции deallocate
,