2

我需要为一个例程计时,并且我想要挂钟时间,所以我正在使用 time() 例程。但是,我的代码已经有一个称为时间的二维数组,所以当我这样做时: startt=time() 它认为我指的是数组。如何在不更改数组名称的情况下解决这个问题?

我试图在我的主程序之外创建一个函数来绕过它,但它不起作用:

     program timetest

     real time(0:10,0:10) ! dummy array to demonstrate problem
     integer*8 startt,endt,tdif

     time=0 ! initialize dummy array to 0

     startt=gettime()
     call sleep(2) !stuff to be timed
     endt=gettime()

     tdif=endt-startt
     print*,"tdif= ",tdif

     end

     integer*8 function gettime()
       gettime=time()
       print*,"gettime= ",gettime
     end function

输出:

获取时间= 0

获取时间= -9223372036854775808

时间差= 0

4

1 回答 1

5

您不能在一个程序单元中以相同的名称显示两个不同的东西。我给您的第一个建议是使用 Fortran 标准内在子例程 SYSTEM_CLOCK 而不是 time()。

如果您在调用者中使用正确的数据类型声明了 gettime,那么您使用单独的例程所采用的方法应该可以工作。正如您所拥有的,gettime 在主程序中是整数(4),但在函数本身中是整数(8)。这些需要匹配。

于 2013-08-14T00:38:43.633 回答