如何使用 ISO Fortran Env 的内在函数以 Fortran 2008 惯用的方式设置函数的返回 KIND 值?
通常在主程序中,我可以使用 ISO Fortran 内部函数,如下所示:
program name here
use iso_fortran_env
implicit none
integer, parameter :: double=REAL64
real(kind=double) :: some_variable
end program name here
但是似乎没有一种方便的方法可以将这些内在函数用于外部函数,因为 REAL64 和 double 都只能在上面的 main 函数中定义。尝试在 main 中定义函数的 KIND 如下:
program name here
use iso_fortran_env
implicit none
integer, parameter :: double=REAL64
real(kind=double) :: some_function
! Do stuff
end program name here
real function some_function()
! Do stuff
end some_function
至少在我的系统上,会引发类型不匹配错误(double 被定义为 KIND=8,而默认 real 在我的系统上被定义为 KIND=4)。我总是可以只使用real(kind=8) function some_function()
,但出于便携性的考虑,我不希望这样做。另外,在一个地方使用来自 iso_fortran_env 的 REAL64 感觉很脏,只是转身在另一个地方使用 KIND=8。
是否有一种简单(或至少可读)的方法来实现这一点,如下所示?
real(kind=REAL64) function some_function()