У меня есть программа, которая вызывает подпрограмму, которая затем вызывает функцию.Меня несколько смущают требования Фортрана к объявлению типа функции.Я объявил тип в функции (т. Е. Настоящая функция foo (...)), и программа работает независимо от того, объявляю ли я функцию в разделе объявления подпрограммы.
Мой конкретный вопрос: не будуОбъявление функции в подпрограмме потенциально может привести к неожиданному поведению в будущем?Я также видел интерфейсный блок и мне интересно, нужно ли это тоже.
В целом, меня также интересует, что Fortran делает «за кулисами» и почему это было бы более или менее важно дляобъявите функцию или используйте интерфейсный блок.
РЕДАКТИРОВАТЬ: Пример кода:
program foo
real :: a,b,c
call bar(a,b,c)
end program foo
subroutine bar(a,b,c)
real :: a,b,c
c = baz(a,b)
end subroutine bar
real function baz(a,b)
real :: a,b
baz = a*b
end function baz