объявление функции хранится в заголовочном файле, а определение (или тело) — в исходном. Нарушать данное правило можно лишь в редких случаях. Кроме того, чтобы иметь доступ к объявлению, исходник должен подключить заголовочный файл. Именно так это работает в C и C++.
Обратите внимание: возвращаемый тип входит в состав объявления, но редко считается частью сигнатуры функции.
Сигнатура — просто имя функции со списком ее входных параметров.
говорит о серьезной проблеме в архитектуре вашего проекта.
Подключение одних заголовочных файлов к другим считается дурным тоном. Если вы так делаете, то это обычно го
заголовочным файлам можно подключать только другие заголовки, но не исходники. К исходным файлам можно подключать только заголовки.
Объявления функций настоятельно рекомендуется размещать в заголовках, а их определения — в соответствующих исходниках.
Объявления принято хранить в заголовочных файлах, а соответствующие определения — в исходных. Это особенно относится к функциям.
Но при этом необходимо понимать, что кросс-платформенность отличается от переносимости. Кросс-платформенное ПО обычно предоставляет разные двоичные (итоговые объектные) файлы и установщики для каждой среды, тогда как переносимые программы везде используют одни и те же исполняемые и установочные файлы.
Чтобы получить некоторые промежуточные продукты, такие как переносимые объектные файлы, достаточно успешно пройти первые три этапа.