是否可以使用户定义的KIND参数全局可用?

时间:2017-08-24 06:53:19

标签: fortran

请考虑以下代码:

module numbers
    integer, parameter :: sing_prec = selected_real_kind(6)
    integer, parameter :: doub_prec = selected_real_kind(15)
end module

每当我想在代码中的某个地方使用real(sing_prec) :: foo类型的变量时,我需要在相应的程序单元中插入use numbers。是否有可能在"全球"时尚,即使全球可用的KIND定义?

这有什么影响吗?如果在许多地方都需要这些类型,那么在任何地方插入use语句都会使代码退出。类似于编译器标志的东西,例如gfortran中的-fimplicit none,用于强加implicit none到处都是好的,但是我无法找到这样的旗帜。

此问题不仅限于特定的Fortran版本。

1 个答案:

答案 0 :(得分:1)

标准的Fortran - 编号

在Fortran的编译器特定实现中 - 据我所知,当前广泛使用的编译器。所有(?)都有选项可以将默认实数(整数,复数也是)视为4或8字节,但不能选择性地将某些视为4 - 而有些视为8-(或者您希望使用的任何长度) )。

你猜错了 - 也许把所有代码放在一个范围内?

Arrrgggh 你惊恐地退缩,一个范围内的所有代码!!!

哪种方式带我到这一点=>最近的编程语言和系统倾向于增加模块化,并认为从一个范围到另一个范围显式导入定义好事。 Fortran使用use,但其他语言中的其他类似机制则位于importinclude等标签下。

顺便说一句,你确实知道内在模块iso_fortran_env不是吗?您可以沿着

行重写您的代码段
use iso_fortran_env, sing_prec => real32, doub_prec => real64