Как разбить файл 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,

Другие вопросы по тегам