Когда сталкивается с необъявленной функцией, компилятор принимает функцию, которая принимает заданное количество аргументов (я думаю) и возвращает int
(ту часть, в которой я уверен) . Ваш второй нет, поэтому вы получаете предупреждение о переопределении.
Я полагаю, что, основываясь на очень быстром сканировании вперед, C99 ( PDF link ) удалил это. Неудивительно, что GCC по-прежнему позволяет им (с предупреждением); Я не могу себе представить, сколько кода может перестать компилироваться ...
Рекомендовать использовать -Wall
(включение всех предупреждений), чтобы вы получали огромное количество дополнительной информации (вы можете отключить определенные предупреждения, когда у вас есть действительно веская причина для того, что вы делаете, чтобы их генерировать при необходимости).