Скажем, у вас есть файл с функцией, которую вы хотите использовать в другом месте:
int func2(int x){
/*do some stuff */
return 0;
}
Что бы вы сделали, это разбили это на заголовочный файл и исходный файл. В заголовочном файле у вас просто есть объявление функции, это говорит компилятору, что эта функция существует, даже если она находится в другом файле. Заголовок может называться func2.h, может выглядеть так:
#ifndef HEADER_FUNC2_H
#define HEADER_FUNC2_H
int func2(int x);
#endif /*HEADER_FUNC2_H*/
Часть #ifndef HEADER_FUNC2_H предназначена для того, чтобы убедиться, что это используется только один раз, чтобы не было нескольких определений.
затем в исходном файле func2.c у вас есть сама функция:
int func2(int x){
/*do some stuff */
return 0;
}
и в любом другом файле теперь, когда вы используете func2, вы должны включить заголовок. Вы делаете это с помощью #include "func2.h". Например, если мы хотим вызвать func2 из randomfile.c, это будет выглядеть так:
#include "func2.h"
/* rest of randomfile.c */
func2(1);
Тогда последний шаг - связать объектный файл, содержащий функцию, с компилятором при компиляции.