Ответ 1
Используйте # 1 - #include во многих местах.
Никогда не используйте # 2 - никогда не объявляйте ничего более одного раза.
Редко использовать # 3 - объявить что-то в файле .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().
Что я хочу знать, какое из следующих действий мне нужно сделать?
Все вышеизложенное, похоже, исправляет ошибку компилятора и позволяет мне вызвать функцию bot из main.c и внутри myFunctions.c, но я не могу найти окончательный источник, который является правильной процедурой.
Используйте # 1 - #include во многих местах.
Никогда не используйте # 2 - никогда не объявляйте ничего более одного раза.
Редко использовать # 3 - объявить что-то в файле .c, как будто вы никогда не собираетесь его повторно использовать.
Файл заголовка должен содержать прототипы. Затем вы включаете его везде, где используются эти прототипы, включая .c файл, содержащий определения функций.
BTW DecС++ больше не активно развивается - вам следует вместо этого перейти на Code:: Blocks.
Определенно первый вариант.
Вы должны выбрать вариант 1. Или заказать myfunctions.c, чтобы определение вызываемой функции выполнялось перед вызывающей ее функцией. Включив заголовок в файле, вы разрешаете компилятору улавливать любое несоответствие между объявлением и определением.
Как уже говорили все, вы должны использовать первый вариант. Общее правило состоит в том, что прототипы функций находятся в файлах .h и их реализациях в файлах .c.