我已经继承了大约400行非常奇怪的Fortran 77代码,我试图逐步分析它,以便在我的脑海中清楚地说明它。Fortran'call'声明:它实际上可以调用什么?
无论如何,我有一个头状文件(实际上是一个.h
,但在它的代码是在FORTRAN不C/C++),在它只是两个语句,称为getarg.h
:
character*80 serie
integer ln
然后我还有一个Fortran文件(.f
)呼吁getserie.h
它有这个代码里面:
subroutine getserie(serie, ln)
include 'getarg.h'
call getarg(1, serie)
ln = index(serie, ' ') - 1
return
end
我的问题的存在:我可以call
与它只是变量声明的外部文件?这样做的效果是什么?
这其实给我带来一堆麻烦一次。我将几个代码连接在一起,代码A有一个名为'drift'的子例程。代码B有一个名为“漂移”的公共块。当代码A试图调用'漂移'时,我得到了一些奇怪的错误(显然它试图调用公共块)。 – mgilson
听起来很糟糕(太不严格?)连接器。通常这应该会产生符号重定义错误。或者至少有一个警告。 –
我使用'gfortran',所以它是gcc的工作。但是,当我终于明白发生了什么时,我有些惊讶。 – mgilson