В чем разница между stop
и exit
в Fortran?
Оба могут немедленно завершить программу с некоторой информацией об ошибке.
В чем разница между stop
и exit
в Fortran?
Оба могут немедленно завершить программу с некоторой информацией об ошибке.
exit
в Fortran - это оператор, который завершает циклы или завершает выполнение других конструкций. Однако возникает вопрос о нестандартном расширении как функции или подпрограммы, предлагаемой многими компиляторами, которая тесно связана с оператором stop
.
Например, gfortran предлагает такую вещь.
Поскольку это использование exit
является нестандартным, вы должны ссылаться на конкретную документацию по внедрению относительно того, какую форму он принимает и какие последствия он имеет.
Оператор stop
, с другой стороны, является стандартным выражением Fortran. Этот оператор инициирует нормальное завершение выполнения программы Fortran (и его можно сравнить с оператором error stop
, который инициирует завершение ошибки).
Помимо знания того, что завершение (обычно) выполнения программы следует за оператором stop
и что существует код остановки, фактический способ, который происходит, снова остается открытым для реализации. Есть несколько рекомендаций (но это только рекомендации) относительно того, что происходит. Например, в Fortran 2008 предлагается
Вышеизложенное довольно неопределенно, так как во многих настройках эти понятия не применяются.
Обычно на практике exit
будет похож на библиотечную функцию C этого имени, и его эффект будет выглядеть как stop
без кода остановки (но все же передача данного статуса обратно в ОС).
В заключение, Fortran не описывает разницу между stop
и exit
. Использование exit
(для терминации) не переносимо, и даже эффект stop
не полностью определен.
stop
- оператор fortran, но exit
- это функция, которая только что завершает работу программы.
Оператор stop
выводит свой аргумент [который также может быть строкой] на stderr
stop 123
и он вернет нулевой статус родительскому процессу.
В то время как exit
является функцией и должна вызываться как любая другая. Он также будет молчать (т.е. Нет сообщения):
call exit(123)
и аргумент exit будет возвращен родительскому процессу как статус