1

重複の可能性:
(C/C++) main から EXIT_SUCCESS または 0 を返しますか?

長い間 return 0; を使っていましたが、アレグロを使い始めた頃からです。C++の本に出くわしてEXIT_SUCCESSについて見つけたよりも、それが定義されているstdlib.hまたはcstdlibを調べ、2行しかありません。

#define EXIT_SUCCESS 0
#define EXIT_FAILURE 1

誰かが私にこれを説明できますか?私は最新の devc++ 4.9.9.2 の mingw バージョンを使用しています。

4

2 に答える 2

7

C99 言語標準では、2 つのマクロEXIT_SUCCESSEXIT_FAILUREを定義して、「関数への引数として使用できる整数定数式を使用して exit、それぞれホスト環境に失敗または成功の終了ステータスを返す」(§7.20/3)。

関数の説明exit(§7.20.4.3/5) では、次のようにも述べています。

最後に、制御がホスト環境に戻されます。の値statusが 0 または の場合、正常終了EXIT_SUCCESSステータスの実装定義形式が返されます。の値が である場合、ステータスの失敗した終了の実装定義形式が返されます。それ以外の場合、返されるステータスは実装定義です。statusEXIT_FAILURE

したがって、0 またはEXIT_SUCCESSで終了すると、それは常にホスト環境にとって「正常終了」を意味します。 EXIT_FAILUREは常に「失敗した終了」を意味する値ですが、それら以外のゼロ以外の値は移植性が保証されていません。

mainfrom から戻ることは、戻り値のステータスで関数を呼び出すことと同じであることに注意してくださいexit(§5.1.2.2.3)。

于 2012-11-02T21:48:06.977 に答える
1

EXIT_SUCCESSおよびEXIT_FAILUREは、 で定義されている標準 C マクロstdlib.hです。C は、これらのマクロの値を指定しません。

POSIX は である必要EXIT_SUCCESSがあります0。(ただし、値には何も指定しませんEXIT_FAILURE)。

于 2012-11-02T21:44:17.107 に答える