Какие причины для / против возврата 0 из main в ISO C++?
Я знаю, что стандарт C++ говорит, что return 0
вставляется в конце main()
если нет возврата заявления; тем не менее, я часто вижу недавно написанный, соответствующий стандарту код C++, который явно возвращает 0 в конце main()
, По каким причинам кто-то захочет явно вернуть 0, если это автоматически выполняется компилятором?
9 ответов
Потому что это выглядит странно - не "возвращать" что-то из функции, имеющей тип возврата, отличный от void (даже если стандарт говорит, что в этом нет особой необходимости).
Будучи явным, вы явно показываете свои намерения.
Полагаясь на что-то неявное, вы могли бы иметь 2 случая: 1) вы намеревались, 2) вы забыли это.
Непонимание. Там просто нет причин, и если кто-то не знает, что они добавят return 0;
,
Дает понять другим программистам, что вы не просто забыли поместить туда оператор return.
Некоторые компиляторы могут выдавать предупреждение, если вы ничего не возвращаете.
Показывает явно, что возвращает функция.
Многие программисты не знают об этом правиле.
Только потому, что ваш код соответствует стандарту, кто сказал, что ваш код будет выполняться через совместимый компилятор? Хотите верьте, хотите нет, но люди используют компиляторы, кроме последних версий GCC и Visual C++.
И, конечно, есть явные намерения, о которых все остальные упоминали.
Потому что некоторые люди не знают. Не обязательно люди, которые написали этот код (хотя это также возможно), но некоторые люди там. Явно писать return 0;
быть добрым к ним.
Кроме того, как соглашение это делает язык более однородным, что эстетически важно по крайней мере для меня.
Потому что так они и сделали 30 лет назад. Это скорее конвенция IMO.
Я часто делаю это, потому что я часто компилирую код для простого C, поэтому я либо набираю его по привычке, либо потому, что созданный мной фрагмент main()
из имеет явный возврат. Там нет причин, чтобы удалить его, поэтому он обычно остается.
С другой стороны, бывают случаи, когда я не буду набирать его (может быть, я понял, что он мне не нужен) или я мог использовать другой фрагмент.