С компилятор различает прототипы функций и их декларацию. Прототипом считается декларация функции (в том числе и предварительная) у которой в списке параметров присутствует ХОТЯ БЫ ОДИН параметр.
Т.е. -
Код
void func(); // - Предварительное описание но НЕ прототип
void func(void); // - Предварительное описание И прототип
void func() // - Описание НЕ ЯВЛЯЮЩЕЕСЯ одновременно прототипом
{
...
}
void func(void) // - Описание ЯВЛЯЮЩЕЕСЯ одновременно прототипом
{
...
}
NB. Для С++ компилятора все немного по другому - он считает ЛЮБОЕ описание прототипом. Функций без прототипа для него вообще не существует