Почему у нас есть несколько объявлений для main в C? - PullRequest
3 голосов
/ 27 сентября 2011

C не поддерживает перегрузку функций.Как мы можем тогда иметь 3 прототипа для основного?Какова историческая причина наличия 3 прототипов?

1 Ответ

9 голосов
/ 27 сентября 2011

Существует только два прототипа для 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 *[]), являются расширениями, зависящими от компилятора / платформы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...