Блин. Вопрос снят... Вас устраивает "как есть", значит, пусть будет "как есть", без заголовочных файлов программа работает? Прекрасно. Не заморачивайтесь. Не стОит. Когда программа начнет глючить - и вопрос поймете, и ответ найдете.
Который раз понимаю, что вопросы "а почему так происходит" на форумах лучше не поднимать - это просто напросто никого не интересует, и разбираться никто не хочет. Работает и ладно, а вопросов наводящих никто не понимает, оказывается.
Ответ на вопрос - кому интересно (Показать/Скрыть)
Открываем описание языка С. Не MSDN. Видим, что чистый С позволяет вызывать неописанную функцию, при этом контроль типов отключается. Я не зря спрашивал, почему можно использовать main без типа результата. В чистом С результат, возвращаемый функцией, если в прототипе не указан его тип - это int... А если размер типа, возвращаемого функцией не будет совпадать с размером переменной, куда он записывается, то будет что? Правильно, проблема.
Столкнетесь - сразу поймете, что имелось в виду...