Fortranのstop
とexit
の違いは何ですか?
どちらも、いくつかのエラー情報でプログラムをすぐに終了できます。
Fortranのexit
は、ループを終了するか、他の構成要素の実行を完了するステートメントです。ただし、問題は、stop
ステートメントに密接に関連している多くのコンパイラーによって提供される、関数またはサブルーチンとしての非標準の拡張についてです。
たとえば、 gfortranは などです。
このexit
の使用は非標準であるため、特定の実装のドキュメントを参照して、これがどのような形式をとり、どのような影響を与えるかを確認してください。
一方、stop
ステートメントは、標準のFortranステートメントです。このステートメントは、Fortranプログラムの実行のnormal終了を開始します(そして、開始するerror stop
ステートメントと比較できますエラー終了)。
(通常は)プログラムの実行の終了がstop
ステートメントの後に続くこと、および停止コードがあることを知る以外は、実際に発生する方法は、実装に開放されたままです。何が起こるかについて、いくつかの推奨事項があります(ただし、これらは推奨事項にすぎません)。たとえば、Fortran 2008では、
上記は、多くの設定で上記の概念が適用されないため、かなり曖昧です。
通常、実際にはexit
はその名前のCライブラリの関数に似ており、その効果はstop
のように停止コードなしです(ただし、指定されたステータスをOSに返します)。
要約すると、Fortranはstop
とexit
の違いについては説明していません。 exit
の使用(終了用)は移植性がなく、stop
の効果さえ完全には定義されていません。
stop
はfortranステートメントですが、exit
はたまたまプログラムを終了させる関数です。
stop
ステートメントは、その引数[文字列にすることもできます]をstderrに出力します
stop 123
そして、それは親プロセスにゼロのステータスを返します。
一方、exit
は関数であり、他のように呼び出す必要があります。また、無音になります(つまり、メッセージは表示されません)。
call exit(123)
終了するための引数は、ステータスとして親プロセスに返されます