В чем разница между "file.c" и "file.h"? - PullRequest
0 голосов
/ 17 февраля 2019

Когда я создаю «file.c» и «file.h», я не знаю, нужно ли мне записывать прототипы функций «file.c» в «file.h», а затем записывать функциив "file.c" без основного.Это правильно, если я сделаю это?Я просто хочу убедиться, что я понял, как создавать заголовочные файлы, и мне нужны разъяснения.

Ответы [ 2 ]

0 голосов
/ 17 февраля 2019

В заголовочном файле .h / вы помещаете объявления ( не определения) , которые вы хотите использовать для .c / исходных файлов.

Только .c файлов компилируются напрямую , передавая их компилятору..h файлы тоже скомпилированы, но косвенно , #include -иножняя их в один или несколько .c файлов.

Поместите как можно большую часть своего кода, включая объявления в .c файлы.Поместите / переместите материал (принадлежащий файлу .c) в файл .h, только если он должен быть известен / использован другим файлом .c.

0 голосов
/ 17 февраля 2019

Компиляторы и другое программное обеспечение, как правило, не обеспечивают различия между файлами с именами «.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, компилятор не сможет выполнить эту проверку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...