次のプログラムがあるとします。
int main(int argc, char** argv){
if(argc < 3){
printf("usage details\n");
return EXIT_FAILURE;
}
dostuff();
return EXIT_SUCCESS;
}
私もこれを見ました:
int main(int argc, char** argv){
if(argc < 3){
printf("usage details\n");
exit(EXIT_FAILURE);
}
dostuff();
exit(EXIT_SUCCESS);
}
ISO/IEC 9899:1989 (C90)によると:
標準では、厳密に準拠する (つまり、実装で定義された動作に依存しない) 返すための 3 つの値が定義されています。成功した終了の場合は 0 と EXIT_SUCCESS、失敗した終了の場合は EXIT_FAILURE です。その他の値は非標準であり、実装によって定義されます。main には、未定義の動作を避けるために、最後に明示的な return ステートメントが必要です。
また、ISO/IEC 9899:2011によると:
5.1.2.2.3 プログラムの終了
メイン関数の戻り値の型が int と互換性のある型である場合、メイン関数への最初の呼び出しからの戻りは、メイン関数によって返された値を引数として exit 関数を呼び出すことと同じです。メイン関数を終了する } に到達すると、値 0 が返されます。戻り値の型が int と互換性がない場合、ホスト環境に返される終了ステータスは規定されていません。
main からの戻りは、同じ戻り値で exit を呼び出すことと同等であると述べています。
そうは言っても、問題は次のとおりです。メインから戻って出口を呼び出すか、メインから終了するかは重要ですか