Стандарт не предусматривает функцию main
с 1 параметром - для него требуются две формы, одна с 0 и одна с 2. Реализациям разрешено разрешать другие.
Итак, GCC делает что-то зависящее от реализации, чтобы разрешить это, даже если вы указали тип.
C89 допускает параметры без объявленного типа, по умолчанию int
. То же самое относится к переменным и к функциям без объявленного типа возвращаемого значения (они возвращают int
). C99 не допускает никаких типов по умолчанию int
(и GCC диагностирует его с помощью -pedantic -std=c99
).