我已經繼承了大約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