Компиляторы и другое программное обеспечение, как правило, не обеспечивают различия между файлами с именами «.c» и файлами с именами «.h».Люди используют следующее соглашение:
- file.c содержит определения объектов и функций, предпочтительно небольшой набор связанных вещей (например, набор процедур для работы с объектамиодин тип).
- file.h содержит объявлений объектов и функций, находящихся в file.c, но только те объекты и функции, которые мы намерены использовать в других исходных файлах.
Определения предоставляют фактическое содержание объектов и функций.Компилятор использует определения для генерации данных и кода для этих объектов и функций.
Объявления сообщают другим исходным файлам об объектах и функциях, таких как указание их типов, чтобы другие исходные файлы могли использовать объектыи функции.
Как правило, file.c должен включать file.h с #include
.Даже если это может показаться излишним, поскольку file.c уже знает об объектах и функциях, которые он определяет, он обеспечивает проверку на наличие ошибок: если file.c включает file.h, а объявления в file.h не соответствуют определениямв file.c компилятор выдаст предупреждения или сообщения об ошибках.Если file.c не включает file.h, компилятор не сможет выполнить эту проверку.