我对编程的理解非常有限,所以我希望我有意义。
我对程序中的固定变量进行了更改(该程序名为NAFnoise;我使用的是.exe,但它附带了源代码,我在那里进行了更改)。该程序是用Fortran编写的,并且是多个文件。我正在使用gfortran编译它,大多数文件都没有问题。然而,一个文件给我带来了麻烦。我甚至没有对它进行任何修改。它给出的错误消息如下:
错误:'x'参数pf'dtime'在< 1>处固有必须是善良的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)
我猜这个程序是在作者将它包含在源文件夹中时找到的,所以我不确定出了什么问题。我改变的变量应该与此无关。它与编译器有关吗?如何解决?
答案 0 :(得分:2)
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