Как можно использовать внутреннюю функцию ISO Fortran Env для установки возвращаемого значения KIND функции способом, который является идиоматическим для Fortran 2008?
Обычно в основной программе я могу просто использовать встроенные функции 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 были бы определены только внутри основной функции, указанной выше. Попытка определить KIND функции в main следующим образом:
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, а реальное значение по умолчанию определяется как KIND = 4 в моей системе). Я всегда мог бы просто использовать real(kind=8) function some_function()
, но я бы предпочел не использовать в интересах переносимости. Кроме того, просто кажется грязным использовать REAL64 из iso_fortran_env в одном месте, только чтобы развернуться и использовать KIND = 8 в другом месте.
Есть ли простой (или, по крайней мере, читаемый) способ сделать это, например, ниже?
real(kind=REAL64) function some_function()