Подтвердить что ты не робот

C Заголовочный файл - правильный способ включения

Я пытаюсь научить себя программированию на C, и я использую DevС++ для своей IDE в Windows XP. Я немного запутался в правильном способе вызвать мои собственные файлы заголовков.

У меня есть мой основной исходный файл main.c и отдельный файл для функций myFunctions.c, которые я включаю в main.c, используя "include" myFunctions.h "со всеми моими прототипами функций, находящимися в этом файле заголовка.

myFunctions.c содержит две функции, называемые showDate(), и одну, называемую showScreen(), и обе функции могут быть вызваны из main.c все хорошо и хорошо.

Мои проблемы начались, когда я попытался вызвать showDate() из showScreen(), и во время компиляции/ссылки он жаловался, потому что у меня не было прототипа внутри myFunctions.c для showDate().

Что я хочу знать, какое из следующих действий мне нужно сделать?

  • включить "myFunctions.h" внутри myFunctions.c

  • Объявить прототип в myFunctions.h и myFunctions.c
  • Объявить прототип только в myFunctions.c только

Все вышеизложенное, похоже, исправляет ошибку компилятора и позволяет мне вызвать функцию bot из main.c и внутри myFunctions.c, но я не могу найти окончательный источник, который является правильной процедурой.

4b9b3361

Ответ 1

Используйте # 1 - #include во многих местах.

Никогда не используйте # 2 - никогда не объявляйте ничего более одного раза.

Редко использовать # 3 - объявить что-то в файле .c, как будто вы никогда не собираетесь его повторно использовать.

Ответ 2

Файл заголовка должен содержать прототипы. Затем вы включаете его везде, где используются эти прототипы, включая .c файл, содержащий определения функций.

BTW DecС++ больше не активно развивается - вам следует вместо этого перейти на Code:: Blocks.

Ответ 3

Определенно первый вариант.

Ответ 4

Вы должны выбрать вариант 1. Или заказать myfunctions.c, чтобы определение вызываемой функции выполнялось перед вызывающей ее функцией. Включив заголовок в файле, вы разрешаете компилятору улавливать любое несоответствие между объявлением и определением.

Ответ 5

Как уже говорили все, вы должны использовать первый вариант. Общее правило состоит в том, что прототипы функций находятся в файлах .h и их реализациях в файлах .c.