И C, и C ++ требуют, чтобы любая реализация языка поддерживала формы int main(void)
и int main(int, char**)
.Однако в стандартах также говорится, что реализация может поддерживать дополнительные формы, и, таким образом, программа, которая использует одну из этих других форм, не автоматически недействительна - скорее, это действительная программа, которая происходит только споддерживаться на определенных платформах.
Единственное различие между C и C ++ в этом отношении заключается в , в котором допускаются альтернативные формы main
.В C ++ все формы должны возвращать int
, поэтому разрешено изменять только аргументы, и, кроме того, если первые два аргумента формы любой являются int, char**
, они должны имеют обычное значение.
C немного более либерально, поскольку допускает любую альтернативную форму main
.Таким образом, программа с void main(char, double)
является допустимой C-программой, для реализации которой требуется поддержка этой сигнатуры, в то время как она безусловно была бы плохо сформированной C ++.С другой стороны, int main(int, char**, char**)
является допустимой сигнатурой для C и C ++, также требующей поддержки реализации, и C ++ ожидает, что первые два аргумента будут иметь обычное значение.