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也是如此