EXIT_SUCCESS и EXIT_FAILURE. Это компиляция когда-нибудь запустить где-нибудь или написать один раз, где компиляция?

Возможный дубликат:
(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.

1

Решение

Стандарт языка 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).

7

Другие решения

EXIT_SUCCESS а также EXIT_FAILURE стандартные макросы C определены в stdlib.h, C не указывает значение этих макросов.

POSIX требует EXIT_SUCCESS быть 0, (Но ничего не указывает для EXIT_FAILURE значение).

1

По вопросам рекламы [email protected]