Использование содержит, интерфейс, модуль или отдельные подпрограммы?

Я написал некоторый код на Фортране, но не совсем понял, как структурировать более длинные коды.

Я часто хочу assumed-shape arrays, Это представляется возможным при использовании interface block, module или contains заявление. Однако наличие подпрограммы вне основного кода без использования любого из этих методов работает во многих случаях, но не для assumed-shape arrays,

В каком контексте предпочтителен каждый из этих подходов и каковы основные отличия?

Каким образом переменные разделяются / наследуются в каждом подходе?

1 ответ

Интерфейсный блок - это дополнительная работа. Вы должны написать блок и пересмотреть его, когда процедура изменится. Интерфейсные блоки полезны для таких целей, как использование средств привязки ISO C для вызова подпрограммы языка C.

Недостаток подпрограммы в разделе "содержит" основной программы состоит в том, что все локальные переменные наследуются. Я думаю, что для процедур лучше быть более изолированными.

Модули делают процедуры более изолированными, а доступ к переменным более понятным, если только вы не используете чрезмерно переменные модуля. Кроме того, проще использовать процедуры из модулей в других программах.

Другие вопросы по тегам