#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
.