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