использование определяемого пользователем файла заголовка C

#c #header-files

#c #заголовочные файлы

Вопрос:

Я не понимаю, как создавать определяемые пользователем файлы заголовков и как их использовать, поэтому я хотел бы спросить, правильно ли я понял.

Если у меня есть две программы на C, одна из них demo.c, а другая называется tree.c, и я могу создать файл заголовка tree.h:

 #ifndef TREE_H
#define TREE_H

//some prototypes here
int size();
int isFull();

#endif
  

и в фактическую программу tree.c я помещаю все фактические функции,

 #include "tree.h"

int size()
{
//some implementation
}

int isFull()
{
//some implementation
}
  

Мне интересно, есть ли у меня другая программа с именем demo.c, могу ли я просто включить дерево.h заголовок и использование функции в дереве.c? точно так же, как то, что мы делаем в Java, используя другой класс?
Нужно ли мне помещать их в один и тот же каталог?

Ответ №1:

Короче говоря, да, вы можете просто сделать #include "tree.h" в demo.c.

Если tree.h не находится в том же каталоге, что и demo.c, вы можете либо указать его путь через #include "some/other/dir/tree.h" , либо передать флаг включения в вызове вашего компилятора. Например, если вы используете gcc, вы могли бы сделать -Isome/other/dir .

demo.c должен видеть только прототипы функций, которые содержит tree.h, чтобы он знал, какие функции он вызывает. tree.c не нужен, пока вы не захотите скомпилировать его в исполняемый файл.

Комментарии:

1. итак, если я хочу использовать функции вызова tree.c в моем demo.c, а затем запустить demo. Нужно ли мне компилировать tree.c и должны ли два исполняемых файла находиться в одном каталоге?

2. Да, вам нужно будет включить оба файла в вызов вашего компилятора. Например, gcc demo.c some/other/dir/tree.c .