Это лучше всего иллюстрируется на примере.
Скажем, мы хотим, чтобы функция нашла куб целого числа.
У вас будет определение (реализация), скажем, cube.c
int cube( int x ) {
return x * x * x;
}
Затем мы поместим функцию объявление в другой файл. По соглашению это делается в заголовочном файле , в данном случае cube.h
.
int cube( int x );
Теперь мы можем вызывать функцию откуда-то еще, например, driver.c
, используя директиву #include
(которая является частью препроцессора C).
#include "cube.h"
int main() {
int c = cube( 10 );
...
}
Наконец, вам нужно скомпилировать каждый из ваших исходных файлов в объектный файл, а затем связать их для получения исполняемого файла.
Использование gcc , например
$ gcc -c cube.c #this produces a file named 'cube.o'
$ gcc -c driver.c #idem for 'driver.o'
$ gcc -o driver driver.c cube.c #produces your executable, 'driver'