Я пытаюсь научить себя фортрану, и возился со связыванием нескольких файлов.В следующих примерах я писал программы в одном файле, функции в другом и использовал блоки интерфейса в моей основной программе для ссылки на внешнюю функцию.
Я проверял, сколько информации было необходимо в блоке интерфейса, ипонял, что я могу удалить его полностью.
Моя программа:
program test
implicit none
real :: x, y, func
x = 3
y = func(x)
print *, y
end program test
И файл функции:
function func(x)
implicit none
real :: x, func
func = x**3
end function func
Затем я скомпилирую его, используя gfortran -o test test.f90 func.f90
икод работает как положено.Мой вопрос: почему мне не нужно включать интерфейсный блок в мой программный файл?Это просто вопрос хорошей практики, или определение func
в качестве реальной переменной служит сокращением?Я на Windows, установив gfortran через minGW.
В качестве дополнительного вопроса, если я вместо этого использую подпрограмму:
subroutine func(x,y)
implicit none
real :: x,y
y = x**3
end subroutine func
И измените строку y = func(x)
на call func(x,y)
тогда код будет работать нормально без какого-либо блока интерфейса или объявления.Почему это?