プログラムが正しく終了した場合はEXIT_SUCCESSを使用し、終了しなかった場合はEXIT_FAILUREを使用する必要があります。EXIT_SUCCESSはゼロであり、ゼロは任意のオペレーティングシステムに移植可能ですが、たとえば、EXIT_FAILUREはUNIXからWindowsに変更されます。これらの定数はstdlib.h
ヘッダーで定義されています。
#include <stdlib.h>
int main()
{
int toret = EXIT_SUCCESS;
if ( !( /* do something useful here */ ) ) {
toret = EXIT_FAILURE;
}
return toret;
}
プログラムがコンソール用に作成された場合、プログラムの戻りコードはより有用でした。今日では、非常に専門的な環境で作業している場合を除いて、それは非常にまれです(そして、ワークフローツールが利用可能になったことで、これも変化しています)。
@Benoitが言ったように、終了コードは、操作が成功したかどうかをオペレーティングシステムに通知します。終了コードが失敗を意味する場合は、うまくいかない可能性があるため、バッチプログラムのフローを中断できます。
たとえば、コンパイラーは、コンパイルが成功した場合はゼロの終了コードを持ち、コンパイルが失敗した場合は別の値を持つことができます。Windowsでは、これはオペレーティングシステム変数「errorlevel」を介してアクセスできます。
gcc helloworld.cpp -ohelloworld.exe
goto answer%errorlevel%
:answer0
copy helloworld.exe c:\users\username\Desktop
echo Program installed
goto end
:answer1
echo There were errors. Check your source code.
:end
echo Now exiting...
このWindowsバッチファイルは、コンパイルが成功したときにhelloworld.exeをデスクトップに「インストール」します。ダブルクリックでバッチファイルの実行をトリガーできるため、コンパイルのためにコマンドラインに触れることを回避できます。
もちろん、統合環境によってより適切に管理されることを考慮に入れてください(終了コードが存在しない場合、それらは正しく機能しません)。また、 makeはこの分野で最適であることに注意してください。
https://en.wikipedia.org/wiki/Make_(software)
正しく実行するには、終了コードも必要です。