Как можно использовать встроенное в 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()