Я хочу иметь возможность создавать набор функций в файле заголовка, который я мог бы включить # в одной из моих программ на C.
Как создать файлы заголовков C
Ответ 1
- Откройте свой любимый текстовый редактор
 - Создайте новый файл с именем whatever.h
 - Поместите в него свои прототипы функций
 
DONE.
Пример what.h
#ifndef WHATEVER_H_INCLUDED
#define WHATEVER_H_INCLUDED
int f(int a);
#endif
Примечание. Включите защиту (команды препроцессора), добавленные благодаря luke. Они избегают включения одного и того же заголовочного файла дважды в одну и ту же компиляцию. Другая возможность (также упоминаемая в комментариях) заключается в добавлении #pragma once, но она не гарантируется для каждого компилятора.
Пример what.c
#include "whatever.h"
int f(int a) { return a + 1; }
И затем вы можете включить "whatever.h" в любой другой .c файл и связать его с файлом объектов any.c.
Вот так:
sample.c
#include "whatever.h"
int main(int argc, char **argv)
{
    printf("%d\n", f(2)); /* prints 3 */
    return 0;
}
Скомпилировать его (если вы используете GCC):
$ gcc -c whatever.c -o whatever.o
$ gcc -c sample.c -o sample.o
Чтобы связать файлы для создания исполняемого файла:
$ gcc sample.o whatever.o -o sample
Вы можете протестировать образец:
$ ./sample
3
$
		Ответ 2
Заголовочные файлы могут содержать любой допустимый C-код, поскольку перед компиляцией он вводится в блок компиляции предварительным процессором.
Если заголовочный файл содержит функцию и включается несколькими .c файлами, каждый .c файл получает копию этой функции и создает для нее символ. Компонент будет жаловаться на дублирующие символы.
Технически возможно создавать функции static в файле заголовка для включения в несколько файлов .c. Хотя это, как правило, не выполняется, потому что он нарушает соглашение о том, что код найден в файлах .c, а объявления найдены в файлах .h.
См. обсуждения в C/С++: статическая функция в файле заголовка, что это значит? для более подробного объяснения.