Der empfohlene Weg, dies in modernen Fortran zu tun wäre, ein Modul zu erstellen, nennen wir es z. "Mein Mathe".
module mymath
contains
function myfunction(x) result(r)
real, intent(in) :: x
real :: r
r = sin(x)
end function
end module
Dann eine andere Datei main.f90
wie folgt aus: In diesem Fall können Sie eine Datei mymath.f90
enthält so etwas wie dieses schaffen
program main
use :: mymath
print *,myfunction(3.1416/2)
end program
Dann kompilieren Sie nur die Quelldateien zusammen:
gfortran mymath.f90 main.f90
Die resultierende ausführbare Datei sollte wie erwartet funktionieren.
EDIT:
Wenn Sie wirklich weg von Modulen bleiben möchten, dann können Sie mymath.f
wie diese machen:
function myfunction(x) result(r)
real, intent(in) :: x
real :: r
r = sin(x)
end function
Und machen main.f90
wie folgt aus:
program main
real, external :: myfunction
print *,myfunction(3.1416/2)
end program
Es kompiliert und funktioniert wie die andere Lösung. Wenn Sie external
anstelle von module
verwenden, wird der Compiler normalerweise nicht überprüfen, dass die Argumente, die Sie an myfunction
übergeben, über die richtige Anzahl, Typen und Dimensionen verfügen, was das Debuggen in der Zukunft komplizieren kann.
Danke, ich werde warten, wenn jemand einen einfachen Weg aufzeigt, die Funktion ohne die Modulumgebung aufzurufen. –
Obwohl vielleicht gute Praxis, ist das "externe" hier nicht erforderlich. – francescalus