Если "функция" была скомпилирована отдельно, несоответствие не будет обнаружено, "функция" вернет двойной, который main будет рассматривать как int... В свете того, что мы говорили о том, как должны совпадать объявления это может показаться удивительным. Причина, по которой может возникнуть несоответствие, заключается в том, что если прототип функции отсутствует, функция неявно объявляется ее первым появлением в выражении, например
sum += "the function"(line);
Если имя, которое ранее не было объявлено, встречается в выражении и за ним следует левая скобка, он объявляется контекстом как имя функции, предполагается, что функция возвращает int, и ничего не предполагается о ее аргументы.
Извиняюсь заранее за неоднозначный вопрос, но что это значит?
Кстати, это страница 4.3 главы книги Брайана У. Кернигана и Денниса М. Ричи C, 2-е издание.