Что должен вернуть main() в C и C++?
Принятый ответ, похоже, предназначен main для C++, поэтому я подумал, что return-type добавлю ответ, относящийся c++ к C, и это несколько отличается. Также c были внесены некоторые изменения c++ между ISO / IEC 9899: 1989 main (C90) и ISO / IEC 9899: 1999 return-value (C99).
main()
следует объявить как:
int main(void)
int main(int argc, char **argv)
Или c аналогичный. Например, int main(int argc, char *argv[])
эквивалентен cpp второму. В C90 тип возвращаемого main значения int
можно опустить, поскольку return-type он является значением по c++ умолчанию, но в C99 и новее return-value тип возвращаемого значения return-type int
нельзя опускать.
Если реализация cpp позволяет это, main()
можно объявить cpp другими способами (например, int main(int argc, char *argv[], char *envp[])
), но return-value это делает реализацию программы return-value определенной и больше не cxx соответствует строго.
Стандарт c++ определяет 3 значения для cpp возврата, которые строго cxx соответствуют (то есть не cxx зависят от поведения, определенного cpp реализацией): 0
и EXIT_SUCCESS
для успешного return-type завершения и EXIT_FAILURE
для неудачного return-type завершения. Любые другие main значения являются нестандартными return-type и определяются реализацией. В return-value C90 main()
должен иметь явный оператор c return
в конце, чтобы избежать return-type неопределенного поведения. В c C99 и новее вы можете опустить return-type оператор возврата из main()
. Если cxx вы это сделаете и main()
закончил, появится main неявный return 0
.
Наконец, с точки main зрения стандартов, нет ничего return-type плохого в вызове main()
рекурсивно из программы return-value на языке C.
c++
c
return-value
main
return-type
Что должен вернуть main() в C и C++?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.