Возможный дубликат:
(C / C ++) вернуть EXIT_SUCCESS или 0 из основного?
Долгое время я использовал return 0;, с тех пор, как я начал использовать allegro. Чем я наткнулся на книгу по C ++ и узнал о EXIT_SUCCESS, чем я заглянул в stdlib.h или cstdlib, где он определен, и в нем только две строки:
#define EXIT_SUCCESS 0
#define EXIT_FAILURE 1
кто-нибудь может мне это объяснить? Я использую версию Mingw последнего devc ++ 4.9.9.2.
Стандарт языка C99 определяет два макроса EXIT_SUCCESS
а также EXIT_FAILURE
расширить до «целочисленных константных выражений, которые могут быть использованы в качестве аргумента
exit
функция для возврата статуса неудачного или успешного завершения, соответственно,
среда хоста «(§7.20 / 3).
В описании exit
функция (§7.20.4.3 / 5), он также говорит:
Наконец, управление возвращается в среду хоста. Если значение
status
ноль или
EXIT_SUCCESS
, определяемая реализацией форма статуса успешное завершение является
вернулся. Если значениеstatus
являетсяEXIT_FAILURE
форма, определяемая реализацией
статуса неудачное завершение возвращается В противном случае возвращается статус
реализации.
Итак, если вы выходите с 0 или EXIT_SUCCESS
, это всегда означает «успешное завершение» для среды хоста. EXIT_FAILURE
это значение, которое всегда будет означать «неудачное завершение», но любое ненулевое значение, кроме тех, которые не гарантированно являются переносимыми.
Обратите внимание, что возвращаясь из main
эквивалентно вызову exit
функция со статусом возвращаемого значения (§5.1.2.2.3).
EXIT_SUCCESS
а также EXIT_FAILURE
стандартные макросы C определены в stdlib.h
, C не указывает значение этих макросов.
POSIX требует EXIT_SUCCESS
быть 0
, (Но ничего не указывает для EXIT_FAILURE
значение).