почему "int main(anything_you_type)" не выдает ошибку?

Здесь я написал свое имя в объявлении аргумента 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?

9
задан Mike Sherrill 'Cat Recall' 30 November 2011 в 11:48
поделиться