는 내가 다른 F90 파일에이 기능을 사용하려면 myfunction.f90
외부 함수를 호출하는 방법?
라는 파일에 다음과 같은 기능
REAL FUNCTION myfunction(x)
IMPLICIT NONE
REAL, INTENT(IN) :: x
myfunction = SIN(x)
END FUNCTION myfunction
있습니다. 어떻게해야합니까?
는 내가 다른 F90 파일에이 기능을 사용하려면 myfunction.f90
외부 함수를 호출하는 방법?
라는 파일에 다음과 같은 기능
REAL FUNCTION myfunction(x)
IMPLICIT NONE
REAL, INTENT(IN) :: x
myfunction = SIN(x)
END FUNCTION myfunction
있습니다. 어떻게해야합니까?
현대 Fortran에서 이것을 수행하는 권장 방법은 모듈을 작성하는 것입니다. "mymath".
module mymath
contains
function myfunction(x) result(r)
real, intent(in) :: x
real :: r
r = sin(x)
end function
end module
그런 다음 다른 파일 main.f90
이 같은 :이 경우, 당신은 하나 개의 파일 같은 것을 포함 mymath.f90
만들 수 있습니다
program main
use :: mymath
print *,myfunction(3.1416/2)
end program
그런 다음 당신은 단지 소스를 컴파일하는 파일을 함께 :
gfortran mymath.f90 main.f90
결과 실행 파일이 예상대로 작동해야합니다.
편집 : 당신이 정말로 멀리 모듈에서 머물 것을 선호하는 경우
, 다음과 같은 mymath.f
할 수 있습니다 :
function myfunction(x) result(r)
real, intent(in) :: x
real :: r
r = sin(x)
end function
을 그리고이 같은 main.f90
합니다
program main
real, external :: myfunction
print *,myfunction(3.1416/2)
end program
을 다른 솔루션과 마찬가지로 컴파일되고 작동합니다. module
대신 external
을 사용하는 경우 컴파일러는 보통 myfunction
에 지정한 인수가 올바른 숫자, 유형 및 차원을 갖고 있는지 확인하지 않습니다. 이는 향후 디버깅을 복잡하게 만듭니다.
그냥 외부 사용은 ...
...
REAL, EXTERNAL :: myfunction
REAL :: X, Y
...
Y = myfunction(x)
컴파일러가 수행하고 놓치기 쉬운 명백한 문제를 잡는 일을 할 수 있도록 현명 말했다 그건 ... 그래서 jabirali 좋은 방법이있다 .
감사합니다. 누군가 모듈 환경없이 함수를 호출하는 간단한 방법을 지적하면 기다릴 것입니다. –
아마도 좋은 연습이지만 '외부'는 여기에 필요하지 않습니다. – francescalus