Fortran - 在运行时设置变量的种类/精度

Puc*_*tek 8 precision fortran

是否有可能将变量本身的精度变为将在运行时定义的变量?说,如果我尝试编译:

      SUBROUTINE FOO( VARIABLE, PRECISION_VALUE )

      IMPLICIT NONE

      INTEGER(4) :: PRECISION_VALUE
      INTEGER(PRECISION_VALUE) :: VARIABLE

      RETURN
      END
Run Code Online (Sandbox Code Playgroud)

编译器输出是:

    error #6683: A kind type parameter must be a compile-time constant.   [PRECISION_VALUE]
          INTEGER(PRECISION_VALUE) :: VARIABLE
    --------------^
    compilation aborted for trial.f (code 1)
Run Code Online (Sandbox Code Playgroud)

不管怎么说呢?我知道不能使用任何任意值KIND,但这不是我在这个问题上的关注点.

har*_*dkl 11

不,这是不可能的,必须知道类型,种类和等级.但是,您可以定义通用子例程接口,其中包含您希望在运行时传递到例程的所有类型的实现.