Есть как минимум 2 аспекта "видимости функции". 1) Прототип функции
(обычно содержится во включенном заголовочном файле) позволяет
компилятору сверять типы аргументов и возвращаемого значения при
вызове. 2) Видимость при линковке (наличие функции в одном из
объектных файлов, включенных в процесс линковки). Функцию можно
вызывать и без прототипа (с оговорками).