Это действительно вопрос новичка. Я учу C, и я не понимаю, как связать вместе
разные файлы.
У меня есть заголовок как
/* file2.h */
int increment(int x);
и файл C
/* file2.c */
#include "file2.h"
int increment(int x)
{
return x+1;
}
Теперь я хочу включить заголовок в file1.c
, чтобы использовать функцию increment
.
Из того, что я понял, я должен сделать что-то вроде:
/* file1.c*/
#include "file2.h"
int main()
{
int y = increment(1);
return 0;
}
Но когда я пытаюсь скомпилировать все, используя
gcc -o program file1.c
Я получаю сообщение об ошибке типа
/tmp/ccDdiWyO.o: In function `main':
file1.c:(.text+0xe): undefined reference to `increment'
collect2: ld returned 1 exit status
Однако, если я включу также file2.c
/* file1.c*/
#include "file2.h"
#include "file2.c" /* <--- here it is! */
int main()
{
int y = increment(1);
return 0;
}
Все работает как положено.
Но если я понял, должен быть включен только заголовочный файл (только с объявлениями в нем). Так как я могу сообщить gcc
, что определение функции increment
, объявленное в file2.h
, содержится в file2.c
?