error: 'x' argument pf 'dtime' intrinsic at <1> must be of kind 4
error: 'x' argument pf 'dtime' intrinsic at <1> must be of kind 4
我对编程的理解非常有限,希望我能说得通。
我更改了一个程序中的固定变量(该程序称为 NAFnoise;我使用的是 .exe,但它带有源代码,我在那里进行了更改)。该程序是用 Fortran 语言编写的,位于多个文件中。我正在使用 gfortran 对其进行编译,并且大多数文件都可以正常工作。然而,一个文件给我带来了麻烦。而且我什至没有对其进行更改。它给出的错误消息是这样的:
error: 'x' argument pf 'dtime' intrinsic at <1> must be of kind 4
etime
出现相同的消息。那些(我猜是)函数和其中的变量唯一一次被引用如下所示:
IMPLICIT NONE
! Local variables.
INTEGER(4) :: klo,khi,i,n_in,nvar,nj,j1,j2,ivar,nok,nbad
REAL(DbKi) :: kk2, Isumwell, Isum, Itot,eps,h1,hmin
REAL(DbKi) :: ys1,ys2,poverall,phipot
REAL(DbKi) :: bigben(2),bigben2(2),dtime,etime
REAL(DbKi) :: phif(10)
COMPLEX(DbKi) :: value,dval1,dval2,dval11,dval12,dval22
COMPLEX(DbKi) :: btrans,btrans1,btrans2,btrans11,btrans12,btrans22
COMPLEX(DbKi) :: bbb,bbb1,bbb2
和
write(*,*) etime(bigben2),dtime(bigben)
和
write(*,*) etime(bigben2),dtime(bigben)
我猜这个程序是在作者将它包含在源文件夹中时找到的,所以我不确定出了什么问题。我更改的变量应该与此无关。它与编译器有关吗?如何修复?
DTIME 是手册 https://gcc.gnu.org/onlinedocs/gfortran/DTIME.html 中描述的非标准 GNU 函数。它需要一个类型为 4 的参数。这是 gfortran 默认设置下的单精度。
可能 DbKi
对您来说意味着双精度。变化
REAL(DbKi) :: bigben(2),bigben2(2),dtime,etime
到
REAL :: bigben(2),bigben2(2)
(或real(4)
)如果您使用 GNU 内在扩展。
如果你真的想调用一些你自己的外部dtime
,你必须为它声明一个接口块。
来自https://gcc.gnu.org/onlinedocs/gfortran/ETIME.html
的etime
也是如此
我对编程的理解非常有限,希望我能说得通。
我更改了一个程序中的固定变量(该程序称为 NAFnoise;我使用的是 .exe,但它带有源代码,我在那里进行了更改)。该程序是用 Fortran 语言编写的,位于多个文件中。我正在使用 gfortran 对其进行编译,并且大多数文件都可以正常工作。然而,一个文件给我带来了麻烦。而且我什至没有对其进行更改。它给出的错误消息是这样的:
error: 'x' argument pf 'dtime' intrinsic at <1> must be of kind 4
etime
出现相同的消息。那些(我猜是)函数和其中的变量唯一一次被引用如下所示:
IMPLICIT NONE
! Local variables.
INTEGER(4) :: klo,khi,i,n_in,nvar,nj,j1,j2,ivar,nok,nbad
REAL(DbKi) :: kk2, Isumwell, Isum, Itot,eps,h1,hmin
REAL(DbKi) :: ys1,ys2,poverall,phipot
REAL(DbKi) :: bigben(2),bigben2(2),dtime,etime
REAL(DbKi) :: phif(10)
COMPLEX(DbKi) :: value,dval1,dval2,dval11,dval12,dval22
COMPLEX(DbKi) :: btrans,btrans1,btrans2,btrans11,btrans12,btrans22
COMPLEX(DbKi) :: bbb,bbb1,bbb2
和
write(*,*) etime(bigben2),dtime(bigben)
和
write(*,*) etime(bigben2),dtime(bigben)
我猜这个程序是在作者将它包含在源文件夹中时找到的,所以我不确定出了什么问题。我更改的变量应该与此无关。它与编译器有关吗?如何修复?
DTIME 是手册 https://gcc.gnu.org/onlinedocs/gfortran/DTIME.html 中描述的非标准 GNU 函数。它需要一个类型为 4 的参数。这是 gfortran 默认设置下的单精度。
可能 DbKi
对您来说意味着双精度。变化
REAL(DbKi) :: bigben(2),bigben2(2),dtime,etime
到
REAL :: bigben(2),bigben2(2)
(或real(4)
)如果您使用 GNU 内在扩展。
如果你真的想调用一些你自己的外部dtime
,你必须为它声明一个接口块。
来自https://gcc.gnu.org/onlinedocs/gfortran/ETIME.html
的etime
也是如此