@igorpowers

Важен ли return в main?

В cpp как известно прога начинается в мейне, и если я указываю ему тип int, то обязательно ли в конце писать return 0? Ну я почему спрашиваю. Сижу книгу по плюсам читаю, здесь в каждом примере в конце обязательно return 0. Ну я естественно пробовал без него, все работает. Но возможно я чего-то не знаю. Поэтому хотел бы спросить у знающих людей, важен ли return в конце мейна? Ну или тупо можно void указывать и забить? Как более корректно?
  • Вопрос задан
  • 511 просмотров
Решения вопроса 1
gbg
@gbg Куратор тега C++
Любые ответы на любые вопросы
Формально, единственная функция, в которой можно не делать return - это именно main.

В остальных случаях, если функция что-то возвращает, наличие return обязательно - иначе будет UB.

Почему для main исключение - никто не знает, потому что параграф в стандарте языка, на который ссылается другой параграф - потерялся:

I looked it up. I believe this was introduced with C99, and apparently the C99 rationale is defect. It has comments for 5.1.2.2.1 Program startup, then labels the next chapter 5.1.2.3 Program execution. It should have been 5.1.2.2. As a consequence of this, the rationale for Program termination that should have been in the real chapter 5.1.2.3, has gone missing in action. Thus, main allows no return code in C99 and there exists no rational reason why.


Источник
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
The C programming language allows programs exiting or returning from the main function to signal success or failure by returning an integer, or returning the macros EXIT_SUCCESS and EXIT_FAILURE. On Unix-like systems these are equal to 0 and 1 respectively.[3] A C program may also use the exit() function specifying the integer status or exit macro as the first parameter.

The return value from main is passed to the exit function, which for values zero, EXIT_SUCCESS or EXIT_FAILURE may translate it to “an implementation defined form” of successful termination or unsuccessful termination.

Apart from zero and the macros EXIT_SUCCESS and EXIT_FAILURE, the C standard does not define the meaning of return codes. Rules for the use of return codes vary on different platforms (see the platform-specific sections).

Exit status
Ответ написан
Комментировать
@res2001
Developer, ex-admin
Если писать код, соответствующий стандарту языка, то корректно, конечно, указывать return.
В большинстве современных ОС любой запущенный процесс возвращает код возврата. Это требование ОС. Кодом возврата процесса обычно является значение возвращаемое из main.

Но, если код возврата не нужен, то можно не указывать return и объявлять void main(). Тогда считается, что код возврата из программы нулевой. Обычно это нормально отрабатывает. Но это не стандартная фича и ваша программа может не собраться на какой-то платформе и/или компиляторе.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы