Здесь я написал свое имя в объявлении аргумента main, но все равно эта программа работает и не выдает никаких предупреждений.
#include <stdio.h>
int main(Mr32)
{
printf("why this works?");
return 0;
}
Всякий раз, когда я пишу что-либо вместо mr32, код все равно работает. Я действительно не знаю, почему это происходит. Согласно стандарту программирования на C это неправильно, верно?
Edit : Я попробовал -Wall, но он не выдает никакого предупреждения.
Я думаю, что здесь должна быть ошибка, потому что я не делаю стандартное объявление определения функции в Си
В Си каждое определение функции должно следовать этому формату
return-type function_name ( arg_type arg1, ..., arg_type argN );
Это должно быть применимо и к main(), правильно...?
Хорошо -Wextra показывает предупреждение, что mr32 по умолчанию int.
Тогда почему тип по умолчанию любого аргумента в main() - int?