隐式none,隐式转换
Implicit none, implicit conversion
如何转换以下使用implicit none
的代码
module kinds
use iso_fortran_env, only : real64, int32
implicit none
integer, parameter :: wp = real64, iwp = int32
end module kinds
使用implicit
。我试过了,
module kinds
use iso_fortran_env, only : real64, int32
implicit integer (w, i)
parameter :: wp = real64, iwp = int32
end module kinds
但它不起作用。
我的问题是如何在 Fortran90 中使用 implicit
语句声明参数。
General comment: Using implicit none
makes debugging life easier!
Just Implicit none, and carry on!
由于您定义的隐式语句是正确的,因此您将 类型声明语句 与 参数语句 混合使用。我提到这一点是因为您在参数语句中使用了标记 ::
。
类型声明语句:
R801 declaration-type-spec [ [ , attr-spec ] ... :: ] entity-decl-list
source: F2018 standard section 8.2
您可以使用可能的属性声明您的类型,例如 PARAMETER
和标记 ::
,它仅在未定义属性时才可选。
PARAMETER
-语句:
The PARAMETER
statement specifies the PARAMETER
attribute (8.5.13) and the values for the named constants in the list.
R851 parameter-stmt is PARAMETER ( named-constant-def-list )
R852 named-constant-def is named-constant = constant-expr
source: F2018 standard section 8.6.11
因此您立即注意到标记 ::
仅在 类型声明语句 中而不是在 参数语句 [=56] 中是可选的=].
现在有两种可能的选项来编写模块:
通过类型声明:
module kinds
use iso_fortran_env, only : real64, int32
implicit integer (w, i)
integer, parameter :: wp = real64, iwp = int32
end module kinds
但是为什么要在这里使用隐式声明,你仍然必须声明它是一个integer
。所以 implicit none
也可以,或者只是隐式声明,什么都不写。
通过PARAMETER
-语句:
module kinds
use iso_fortran_env, only : real64, int32
implicit integer (w, i)
parameter (wp = real64, iwp = int32)
end module kinds
如何转换以下使用implicit none
module kinds
use iso_fortran_env, only : real64, int32
implicit none
integer, parameter :: wp = real64, iwp = int32
end module kinds
使用implicit
。我试过了,
module kinds
use iso_fortran_env, only : real64, int32
implicit integer (w, i)
parameter :: wp = real64, iwp = int32
end module kinds
但它不起作用。
我的问题是如何在 Fortran90 中使用 implicit
语句声明参数。
General comment: Using
implicit none
makes debugging life easier!
Just Implicit none, and carry on!
由于您定义的隐式语句是正确的,因此您将 类型声明语句 与 参数语句 混合使用。我提到这一点是因为您在参数语句中使用了标记 ::
。
类型声明语句:
R801
declaration-type-spec [ [ , attr-spec ] ... :: ] entity-decl-list
source: F2018 standard section 8.2
您可以使用可能的属性声明您的类型,例如 PARAMETER
和标记 ::
,它仅在未定义属性时才可选。
PARAMETER
-语句:
The
PARAMETER
statement specifies thePARAMETER
attribute (8.5.13) and the values for the named constants in the list.R851 parameter-stmt is
PARAMETER ( named-constant-def-list )
R852 named-constant-def isnamed-constant = constant-expr
source: F2018 standard section 8.6.11
因此您立即注意到标记 ::
仅在 类型声明语句 中而不是在 参数语句 [=56] 中是可选的=].
现在有两种可能的选项来编写模块:
通过类型声明:
module kinds
use iso_fortran_env, only : real64, int32
implicit integer (w, i)
integer, parameter :: wp = real64, iwp = int32
end module kinds
但是为什么要在这里使用隐式声明,你仍然必须声明它是一个integer
。所以 implicit none
也可以,或者只是隐式声明,什么都不写。
通过PARAMETER
-语句:
module kinds
use iso_fortran_env, only : real64, int32
implicit integer (w, i)
parameter (wp = real64, iwp = int32)
end module kinds