Объявить основной прототип
есть ли причина, по которой я никогда не вижу прототип main, объявленный в программах C, т. е.:
int main(int argc, char* argv[]);
int main(int argc, char* argv[])
{
return 0;
}
всегда казалось несовместимым..
4 ответов
стандарт языка C, проект n1256:
5.1.2.2.1 запуск программы
1 функция, вызываемая при запуске программы называетсяmain
. реализация объявляет прототип для этой функции. Он определяется с помощью возвращаемого типаint
и без параметры:int main(void) { /* ... */ }
или с двумя параметрами (называемыми здесьargc
иargv
хоть какие-то имена могут быть используется, как они локальны для функции, в которой они объявлены):int main(int argc, char *argv[]) { /* ... */ }
или эквивалент;9) или каким-либо другим образом, определенным реализацией.
выделено мной.
объявление прототипа означает, что вы хотите вызвать его в другом месте, что не имеет смысла для функции main ().
нет необходимости в прототипе, так как main
не должен вызываться другими процедурами (и в вызове c++main
фактически запрещено).
простая причина в том, что управление всегда сначала идет в main.Так оно и есть!--1-->автоматически компилятором таким образом, предоставление его прототипа является избыточным и бесполезным.
также мы используем прототип, когда вызов функции до ее определения.Таким образом, глядя на компилятор прототипа функции, можно решить, является ли вызов законным или нет.Но в случае main мы привыкли предоставлять свое определение вместе с его декларация (что также логически правильно), таким образом, нет необходимости в прототипе.
даже когда мы делаем наши программы c, организованные в несколько файлов, нет необходимости в прототипе main.