对于某些用途,我需要在 fortran 模块中的另一个函数中定义一个函数。
易于理解的示例代码是
module func
implicit none
contains
real function f(x,y)
real x,y,g
real function g(r)
real r
g=r
end function g
f=x*g(y)
end function f
end module func
use func
implicit none
write(*,*) f(1.0,1.0)
end
这在 gfortran 中给出了很多错误,例如意外的数据声明、预期的结束函数 f,而不是 g....等。
在fortran的另一个函数中定义一个函数的正确方法是什么?
最佳答案
您使用内部子程序,见下文。注意内部子程序本身不能包含内部子程序。
ian@eris:~/work/stack$ cat contained.f90
Module func
Implicit None
Contains
Real Function f(x,y)
! Interface explicit so don't need to declare g
Real x,y
f=x*g(y)
Contains
Real Function g(r)
Real r
g=r
End Function g
End Function f
End Module func
Program testit
Use func
Implicit None
Write(*,*) f(1.0,1.0)
End Program testit
ian@eris:~/work/stack$ gfortran-8 -std=f2008 -Wall -Wextra -fcheck=all -O -g contained.f90
ian@eris:~/work/stack$ ./a.out
1.00000000
ian@eris:~/work/stack$
关于function - 在fortran中的另一个函数内定义函数时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60995301/