Существует только два прототипа для main
, которые должна распознавать стандартная реализация C: int main(void)
и int main(int, char *[])
.Это не перегрузка, поскольку в каждой программе может быть только один main
;наличие void foo(int, double)
в одной программе и char *foo(FILE *)
в другой тоже не перегружает.
Причиной двух прототипов является удобство: некоторые приложения нуждаются в аргументах командной строки, в то время как другие не беспокоятсяс ними.
Все остальные прототипы, такие как void main(void)
и int main(int, char *[], char *[])
, являются расширениями, зависящими от компилятора / платформы.